Angularjs Angular 2 bootsrap应用程序组件(无模板/模板)由html提供

Angularjs Angular 2 bootsrap应用程序组件(无模板/模板)由html提供,angularjs,angularjs-directive,angular,Angularjs,Angularjs Directive,Angular,我曾经用angular1构建应用程序,在allready加载的DOM元素上可能有指令,就像你有主组件(app),它是从加载的html构建的,然后在里面你可以从以太加载的html加载指令或从URL加载指令 然而,在angular2中,似乎要启动SRAP应用程序,我必须使用需要有模板/模板URL的组件,我认为这不是必要的,因为我不想单独加载菜单和其他常见内容,我宁愿在服务器级别上这样做,然后单独加载。有人知道我如何在angular2中实现这一点吗?在angular2中,您需要引导一个组件,组件需要有

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


然而,在angular2中,似乎要启动SRAP应用程序,我必须使用需要有模板/模板URL的组件,我认为这不是必要的,因为我不想单独加载菜单和其他常见内容,我宁愿在服务器级别上这样做,然后单独加载。有人知道我如何在angular2中实现这一点吗?

在angular2中,您需要引导一个组件,组件需要有一个视图。指令无法引导。指令不能动态添加或删除,它们仅在组件视图中的静态HTML与其选择器匹配时应用


在我看来,Angular1更适合您的用例。

您可以有指令,但正如前面提到的@Günter Zöchbauer,您需要引导组件

更改检测器是在组件首次实例化时创建的。以下是Angular文档中ng2指令的一个示例:

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 {
}
类迎宾员{
问候语(名称:string){
返回“Hello”+name+“!”;
}
}
@指示({
选择器:“需要接线员”
})
班级需求经理{
迎宾员:迎宾员;
构造函数(接线员:接线员){
this.greeter=问候者;
}
}
@组成部分({
选择器:“问候”,
视图提供程序:[
迎宾员
],
模板:``,
指令:[NeedsGreeter]
})
类HelloWorld{
}
有关更多详细信息,请参阅:

但请记住:

每个角度组件都需要一个@component注释。这个 @组件注释指定组件实例化的时间,以及 它绑定到哪些属性和HostListener

实例化组件时,角度

  • 为组件创建阴影DOM
  • 将选定模板加载到阴影DOM中
  • 创建使用提供程序和视图提供程序配置的所有可注入对象

谢谢你的回答。所以你的基本意思是,在angular2中,我必须运行并行请求来获取我的第一个身体内容。对不起,我不明白你如何从我对“必须运行并行请求”的回答中得出结论。你能再解释一下你的意思吗?第一个请求我加载了整个页面——javascript、meta等,但没有html。然后,当bootsrtap启动时,我必须加载html(组件加载它),以便为每个htmldom提供指令和其他组件。请告诉我我错了,有办法解决它。@mirazasx是的,没错。你要找的是转义,它在angular2和angular1中不一样。好吧,我的问题是我不想通过组件的templateUrl加载整个HTML,我更喜欢用初始页面请求加载它,然后用javascript接管。那是我设法对付安格拉尔的。当我启动angular时,用户有一秒钟的空闲时间来思考单击什么。顺便说一句,比如说谢谢,它现在在一开始就非常有用。