不带模板/模板的Angular 2 bootsrap应用程序组件使用html

时间:2016-06-29 10:33:53

标签: angularjs angularjs-directive angular

我曾经使用angular1构建应用程序,有可能在allready加载的DOM元素上有指令,就像你有主要组件(app),它是从加载的html构建,然后在里面你可以加载指令来自以太网加载html或从URL加载它。

在angular2中似乎对于bootsrap应用程序我必须使用组件,这需要我有模板/ templateURL,我认为这不是nessesery因为我不想加载单独的菜单和其他常见的东西,我宁愿在服务器级别上执行此操作然后将其分开。有谁知道我怎么能在angular2中实现这个目标?

2 个答案:

答案 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配置的所有可注入对象。
  •