我曾经使用angular1构建应用程序,有可能在allready加载的DOM元素上有指令,就像你有主要组件(app),它是从加载的html构建,然后在里面你可以加载指令来自以太网加载html或从URL加载它。
在angular2中似乎对于bootsrap应用程序我必须使用组件,这需要我有模板/ templateURL,我认为这不是nessesery因为我不想加载单独的菜单和其他常见的东西,我宁愿在服务器级别上执行此操作然后将其分开。有谁知道我怎么能在angular2中实现这个目标?
答案 0 :(得分:3)
在Angular2中,您需要引导组件,组件需要具有视图。指令不能被引导。指令不能动态添加或删除,它们仅适用于组件视图中的静态HTML与其选择器匹配的位置。
对我而言,听起来对于您的用例Angular1更合适。
答案 1 :(得分:2)
您可以拥有指令,但在您需要引导组件之前,如@GünterZöchbauer所述..
首次实例化组件时会创建更改检测器。以下是Angular文档中ng2 Directive的一个例子:
class Greeter {
greet(name:string) {
return 'Hello ' + name + '!';
}
}
@Directive({
selector: 'needs-greeter'
})
class NeedsGreeter {
greeter:Greeter;
constructor(greeter:Greeter) {
this.greeter = greeter;
}
}
@Component({
selector: 'greet',
viewProviders: [
Greeter
],
template: `<needs-greeter></needs-greeter>`,
directives: [NeedsGreeter]
})
class HelloWorld {
}
有关详情,请参阅:https://angular.io/docs/ts/latest/api/core/index/ComponentMetadata-class.html#!#constructor
但请记住:
每个Angular组件都需要一个@Component注释。该 @Component注释指定组件实例化的时间,和 它绑定的属性和hostListeners。
实例化组件时,Angular
- 为组件创建一个shadow DOM。
- 将所选模板加载到shadow DOM中。
- 创建使用providers和viewProviders配置的所有可注入对象。