Angular 2:以两种不同的方式使用组件:作为路由的目标和通过选择器 <selector-my-component>
Angular 2: Using a component in two diffrent ways: as target of a route and by selector <selector-my-component>
这是一个关于 Angular 2 的一般性问题(此处没有源代码)
在Angular2个组件可以指定为路由器特定路由的目标。路线
/something/:myId
可能会激活 "SomethingComponent"。
同时可以通过引用模板中的选择器将组件拉入其他组件,如下所示:
<something-component [myId]="'123'"></something-component>
可以同时使用一个组件吗?我可以在组件内部区分它是如何激活的吗?
您可以像
一样注入Router
constructor(@Optional() private router:Router) {}
据我所知,如果它不是路由组件,则不会注入路由器。
您还可以添加一个 @Input() someName
并像 <some-dual [someName]="someValue">
一样使用它。路由器添加组件时未设置输入。
您还可以使用一个包装器元素,它除了包装组件和转发绑定外什么都不做,以便它们在 <some-dual>
中的设置方式与路由器添加时的方式相同(例如通过共享服务而不是绑定)并且包装器可以设置一个额外的标志,指示组件是从模板而不是路由器实例化的。
这是一个关于 Angular 2 的一般性问题(此处没有源代码)
在Angular2个组件可以指定为路由器特定路由的目标。路线
/something/:myId
可能会激活 "SomethingComponent"。
同时可以通过引用模板中的选择器将组件拉入其他组件,如下所示:
<something-component [myId]="'123'"></something-component>
可以同时使用一个组件吗?我可以在组件内部区分它是如何激活的吗?
您可以像
一样注入Router
constructor(@Optional() private router:Router) {}
据我所知,如果它不是路由组件,则不会注入路由器。
您还可以添加一个 @Input() someName
并像 <some-dual [someName]="someValue">
一样使用它。路由器添加组件时未设置输入。
您还可以使用一个包装器元素,它除了包装组件和转发绑定外什么都不做,以便它们在 <some-dual>
中的设置方式与路由器添加时的方式相同(例如通过共享服务而不是绑定)并且包装器可以设置一个额外的标志,指示组件是从模板而不是路由器实例化的。