- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试更改 Angular 1.x 应用程序以使用 Angular 1.5 组件,这是一项新功能(问题应该与 Angular 2.0 相关)。
据我所知,我需要创建一个根组件,它基本上会为我的应用程序提供主要的引导代码,这显然需要我的 ui-view 以便我可以注入(inject) View (状态)。
我在尝试理解在创建组件时应该获得多少细节时遇到了问题。
让我们以注册表单页面为例,这是一个很好的例子,说明我真的不是 100% 确定如何继续。
据我了解,组件应该是独立运行的自包含组件。
所以注册表单页面将是一个组件,但我还应该为表单创建一个组件,并为每个“特殊”用户界面输入字段创建一个组件,即 TextBox、Dropdown(假设这些除了标准的 html5 元素之外做一些特殊的事情).
我真的应该深入到这个级别吗?如果我那样做,表单将需要将自己与其他每个特殊组件组合在一起。这意味着表单可以重复使用并显示不同的元素,对于 ui 元素也是如此,它们可以在其他地方重复使用。我应该下降到这个水平吗?
让我有点困惑的另一件事是依赖关系(不是注入(inject)),所以如果形成对 3 x 特殊组合框和 1 x 我的特殊文本框的依赖关系,那么我需要将这些项目放在 IT 的模板中。虽然现在这个组件不是一个独立的组件,因为它依赖于其他组件来构建自己。
当然,UI 元素(我的特殊文本框、特殊组合框)将是自包含的。
所以我的问题是,这可以接受吗?我看不出还有什么其他办法。当然,一些更高级别的组件会依赖于其他组件,对吗?否则我的表单永远无法自行组合。
我在这里遗漏了什么吗?除了在模板中放置其他组件之外,还有其他选择吗?
我想我可以为表单中的每个组件使用一个子状态,但这感觉不对,虽然这会从更高的组件中删除组件标签,但我仍然需要有 NAMED ui-views。
最佳答案
From what I understand I need to create a Root Component which would basically provide the main bootstrapping code for my app, this would obviously need my ui-view so that I can inject the view (state).
在 Angular2 中,有一个根组件包装了整个 Angular2 应用程序。你可以在一个页面上有多个 Angular2 应用程序。每个应用程序都使用它自己的根组件单独引导。该应用程序由 View 和添加到其中的 HTML、组件和指令组成。
From what I understand a component should be a self contained component that should work on its own.
不确定“独立”是什么意思。一个组件就像一个类,应该做一件事并且把它做好。如果一个组件仅打算与特定的其他组件结合使用,这也很好。
例如,当您的菜单项组件仅适用于您的自定义菜单组件时。当然,最好有一个可以在其他菜单组件中工作的菜单项,但是当您的菜单组件可以在与自定义菜单项组件一起使用时提供特殊功能时,那就完全有效了。
So the registration form page would be a component but then I should also create a component for the form and a component for each "special" ui input field i.e. TextBox, Dropdown (assuming these do something special other than the standard html5 elements).
如果你为每个 UI 元素制作 Angular 组件,最大的好处是你可以在其他组件和应用程序中重用这些组件。这也和我上面说的很吻合。一个组件应该做一件事并且把它做好。然后从您的组件组合其他组件和应用程序。
Should I really get down to this level, If I did that the form would need to compose itself with each of the other special components. This would mean the form could be reused and show with different elements and the same goes the for ui elements, they could be reused in other places. Should I be dropping down to this level ?
我认为构建通用表单组件并不常见,但可以做到,而且我确信在某些情况下这非常有意义。 Angular2 组件也支持嵌入。您可以创建一个表单组件,其中包含边框和提交按钮以及显示验证错误和 <ng-content></ng-content>
的区域。放置 child 的标记。
<my-form>
<my-dropdown label="gender" [data]="genderList" [(ngModel)]="gender"></my-dropdown>
<my-date label="birth date" [(ngModel)]="birthDate"><my-date>
</my-form>
The other thing that has me a little confused is dependencies (not injection), So if form as a dependency on 3 x special combobox and 1 x of my special textbox then I would need to place these items inside IT'S template. Although now this component isn't a self contained component as it has dependencies on other components to build itself.
在我上面的例子中 <my-form>
组件不需要了解 <my-dropdown>
或 <my-date>
, 只有使用 <my-form>
的组件, <my-dropdown>
, 或 <my-date>
需要在 directives: [MyForm, MyDropdown, MyDate]
中列出它们.
关于Angular 2.0 (1.5 with ui-router) 组件创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37641477/
我有一个已发布的库,其中包含一个在其模板中使用 [routerLink] 的组件。在我的应用程序中安装库后,我收到错误 NullInjectorError:R3InjectorError(AppMod
/~/@ReMix-Run/Router/dist/router.cjs.js模块分析失败:/HOME/sharib/Desktop/Full Stack Developer Tutorial/MER
在 vuejs 2 中,我能够通过返回渲染 html 标签直接在路由器中渲染。我正在尝试使用 vue-router 4 在 vue3 中做同样的事情,但它似乎不起作用: { path:
在我的应用程序中,我使用 vue-router。当我使用 router.map({}) 将路由传递给路由器时,路由可以工作,但当我在构造函数中传递它们时,路由就不起作用。知道这是为什么吗? // wo
我正在 react 应用程序中实现路由。我对react-router 4.0相对于react-router-redux的优势感到困惑。我也对react-router-dom感到困惑。 react-ro
我有以下两条路线:/items和/items/buy。 每个路线在一个 View 中对应一个选项卡。两条路线均使用精确的 Prop 进行渲染,但导航至/items/buy时,仍将两个选项卡标记为事件选
我有一个带有 url/product/0 的新产品页面。当使用按钮保存产品时,我想显示“已成功保存”消息并将 url 更改为/product/1024 而无需实际导航到该页面,因为这会导致对页面上的产
我对此有些困惑。我定义了一条名为classes/:id的路线。在应用程序中导航到该路线时,将调用componentDidMount()。但是,当重新加载页面或复制并粘贴URL时,页面将完全加载,但根本
假设我有以下2条路线: ... ... 现在,当我尝试按路线/news时,会触发带有Home参数的param1的根路线... 我认为解决方案是在像/?param1这
我正在将 Vue Router 与 Vue 3 一起使用,并尝试添加一个包罗万象的路由以在用户尝试访问无效 URL 时重定向用户。当我尝试使用通配符 (*) 时,我将以下错误记录到控制台: Uncau
我在我的项目中使用react-router-dom 4.0.0-beta.6。我有如下代码: 我想在 HomePage 组件中获取查询参数。我找到了 location.search 参数,它看起来像
我正在使用 Vue 路由器。在我的代码中,我曾经有: 这有效,并且页面数据被传递到组件。但是如何使用路由器 View 执行相同的操作呢?这似乎不起作用: js: var vm = new Vue(
我目前正在一个项目中使用react-router-redux,除了我不知道如何访问react-router路由器之外,一切都工作正常。 @connect((state, props) => {
当使用链接时,路由器按预期工作,尽管我收到警告 [history] pushState is deprecated;使用推送代替。 使用react-router-redux中的routeActio
我想创建一个多页 Meteor 网络和移动应用程序。因此,我正在寻找路由服务。 来自 research ,我收集了Iron Router就是我要找的。但是很多教程也提到了Meteor.Router I
我正在使用 React Router(版本 4.0.0)和 Router组件有一个名为“history”的必需 Prop 。 我知道在以前版本的react-router中你可以导入browserHis
我正在使用 氟罗包用于导航。 Fluro 和 Flutter 正在使用“路由器”。所以他们的类(class)合并了。我怎么能解决这个问题? lib/routers/routers.dart:2:1:
自从我更新了 Vue.js 应用程序的节点包后,我在浏览器控制台中收到以下警告: [vue-router] 's tag prop is deprecated and has beenremoved
我正在尝试在我的应用程序中将 react-router 更新到 v2.6 并将 react-router-relay 更新到 v0.7,但我正在努力按照变更日志来解决所有重大变更。我想我解决了所有的变
router-view 和 router-link 组件无法在我的应用中解析不知道是什么问题 附上应用代码它是一个主页应用程序,带有类似 navbar 的东西,用于路由到 vue 组件,如 state
我是一名优秀的程序员,十分优秀!