问题标签 [angular2-modules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 为什么功能模块必须导出AngularJS中的公共依赖项
我一直在阅读有关创建功能模块的教程:https ://johnpapa.net/introducing-angular-modules-feature-modules-2/ 。
在本教程FormsModule
中由导入shared.module.ts
然后导出。这是为什么 ?
又为什么shared.module.ts
还出口CommonModule
。这是为什么?
这是否也意味着我必须导出所有 SharedModule 的导入?
此致
angular - 在许多 ngModule 中具有变量的一项服务
这不是一个真正的问题,但它是一个问题:
在一个测试项目中,我尝试在具有相同 TranslateService 的多个 ngModule 中使用 ng2-translate。
包.json:
它不起作用,对于每个模块我必须声明一个新的
'翻译模块'
在组件中,它是一个新的 TranslateService,因此它不会保留翻译语言的价值。
您是否尝试在多个 ngModule 中注入相同的服务?如果是,如何?
谢谢。
angular - “模块”不是任何 NgModule 的一部分,或者该模块尚未导入您的模块
我有一个带有一些模块的应用程序。
这是我的根模块:
这是我的常用模块之一:
我认为这是正确的方法,但是我收到以下错误:
AppModule 不是任何 NgModule 的一部分,或者该模块尚未导入您的模块
我在整个应用程序中搜索了 AppModule,我只在app.module.ts
.
我是否缺少导入/导出某些东西?任何帮助都会很棒。谢谢。
angular - Angular2 AOT 编译与延迟加载模块和 systemjs
简洁版本:
angular2(当前为 2.2.1)是否按照快速入门使用 systemJS 与提前编译的延迟加载模块一起工作?
更长的版本:
我对 angular2 相当陌生,并且一直在关注 angular.io 上的快速入门和其他文档,以创建一个包含一些组件的简单站点,这些组件被分离成通过路由延迟加载的模块。
所以跟随这里:https ://angular.io/docs/ts/latest/cookbook/aot-compiler.html
我已经按照所有说明进行操作,我在 aot 文件夹中使用“node_modules/.bin/ngc”-p tsconfig-aot.json' 命令得到了输出,并且我在其中有一个“build.js”文件运行 '"node_modules/.bin/rollup" -c rollup-config.js' 命令后我的 dist 文件夹。
我已经设置了我的 index.html 删除 system.js 并引用了我的 build.js 输出。
我最初的运行失败了,抱怨它不知道“系统”是什么。我认为在构建过程中,我不再需要 system.js,所以不确定那里发生了什么。
如果我包含 system.js 并再次运行,我的错误中会出现以下堆栈跟踪:
加载资源失败:服务器响应状态为 404(未找到)build.js:3 异常:未捕获(承诺中):错误:(SystemJS)XHR 错误(404 未找到)正在加载http://localhost:3000 /app/shell/layout.module.ngfactory 错误:XHR 错误 (404 Not Found) 在 XMLHttpRequest.wrapFn [as _onreadystatechange] ( http://加载http://localhost:3000/app/shell/layout.module.ngfactory localhost:3000/node_modules/zone.js/dist/zone.js:698:29 ) 在 ZoneDelegate.invokeTask ( http://localhost:3000/node_modules/zone.js/dist/zone.js:265:35 ) 在Object.onInvokeTask ( http://localhost:3000/dist/build.js:4:15086 ) 在 ZoneDelegate.invokeTask (http://localhost:3000/node_modules/zone.js/dist/zone.js:264:40)在 Zone.runTask (http://localhost:3000/node_modules/zone.js/dist/zone.js:154 :47 ) 在 XMLHttpRequest.ZoneTask.invoke ( http://localhost:3000/node_modules/zone.js/dist/zone.js:335:33 ) 加载http://localhost:3000/app/shell/layout 时出错。 module.ngfactory (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/app/shell/layout.module.ngfactory Error: XHR error (404 Not Found) loading http://localhost:3000/app /shell/layout.module.ngfactory 在 XMLHttpRequest.wrapFn [as _onreadystatechange] ( http://localhost:3000/node_modules/zone.js/dist/zone.js:698:29) 在 ZoneDelegate.invokeTask ( http://localhost:3000/node_modules/zone.js/dist/zone.js:265:35 ) 在 Object.onInvokeTask ( http://localhost:3000/dist/build.js:4 :15086 ) 在 ZoneDelegate.invokeTask ( http://localhost:3000/node_modules/zone.js/dist/zone.js:264:40 ) 在 Zone.runTask ( http://localhost:3000/node_modules/zone.js /dist/zone.js:154:47 ) 在 XMLHttpRequest.ZoneTask.invoke ( http://localhost:3000/node_modules/zone.js/dist/zone.js:335:33 ) 加载http://localhost 时出错: 3000/app/shell/layout.module.ngfactory
奇怪的是它正在尝试加载“ http://localhost:3000/app/shell/layout.module.ngfactory ”,这是我懒加载的模块之一。
AOT 是否不适用于延迟加载的模块?
angular - Angular 2 将子选择器从一个子模块调用到子模块
我有一个目录结构:
app.module.ts
app.component.ts
核心模块.ts
核心组件.ts
类别.module.ts
类别.component.ts
我想调用与类别相同级别的category selector
on category.component.ts
,core.component.ts
即 main 的子模块app.module
。
是否可以通过仅将模块添加到父模块列表来调用未在另一个模块中定义的组件?
编辑:我收到此错误:
javascript - Angular 2 路由模块交互
我有 3 个模块:SimpleCalculations、FunnyCalculations、OtherCalculations。他们每个人都有routing.module.ts
文件,我在其中定义他们的子路线和其他东西。
我想拥有 MainCalculation 模块,这些子路由将从我已经告诉过的模块中获取。例如,我会CanActivate
为这些模块中的所有路由添加公共防护。
正确的方法是什么?我不想把所有这些路线都放在一个文件中。
angular - 如何通过惰性路由使用在核心模块中定义的组件?
我有一个组件,我想在我的应用程序的几个地方重用它。因此,我在我的核心模块中创建了一个带有新组件的模块。我得到的错误是'foo' is not a known element
.
你可以在这里看到一个演示。您将看到我希望在其中共享模块的组件app/core/foo/foo.component.ts
,该组件已导入到CoreModule
. 你会看到FooComponent
(使用选择器foo
)在app/crisis/crisis-list.component.ts
.
我已经阅读了 Angular 2 模块文档,无法解释为什么我不能FooComponent
随心所欲地使用。
我错过了什么?
javascript - angular2路由器将路由解释为参数?
我正在尝试使用路由参数路由到子模块,我的 app.routes 看起来像
我的子组件(单元格)具有以下路线:
CellComponent
看起来像这样:
我希望能够调用/cell/2
路由并进入2
我的控制台,但是,如果我进行该调用,则会收到错误消息:
TypeError:无法读取未定义的属性“长度”
这似乎是因为使用了未定义的路由,如果我只是调用,/cell
那么我的组件会很好地加载并打印cell
到控制台。为什么路由器将路由解释为参数?
angular - Angular2路由:导入带有路由的子模块+使其前缀
我有一个主模块和一些子模块。我想在它们之间指定一些不平凡的路由。
我更喜欢在子模块中定义子模块的路由。例如:
我想用它自己的内部路由导入这个模块,但我想让它的整个路由加前缀。
此设置创建以下路由:/country
,/country/list
等,但我想让它们像这样前缀:
/settings/country
/settings/country/list
/settings/country/create
我还想通过其他路由访问其他模块,例如CityModule
under/otherstuff/city/create
和 /otherstuff/city/list`。
我的问题:
- 是否可以导入具有自己路由的模块并为其路由添加前缀?
- 此外:有没有办法在 2 个子模块之间建立与它们的最终(前缀)路由无关的链接?
更新
公认的答案是最好的方法:在模块中创建路由,在外部注册它们。因此,您可以修改路由,例如为它们添加前缀(这是我想要的),您可以定义保护、覆盖或过滤它们等。