如何将主要组件的先前内容保留在Angular 2中?

Anu*_*thi 6 angular-template angular

在angular 1中,我可以将任何元素定义为root元素,并且不能替换任何已编写的内联HTML。例如角度1。

<body>
  <div ng-app=""> 
    <h1><?php echo $heading_this_page;?></h1>
    <p>Name : <input type="text" ng-model="name" placeholder="Enter name here"></p>
    <h1>Hello {{name}}</h1>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

但是在角度2中,如果我这样写的话。

<body>
  <ng-app> 
    <h1><?php echo $heading_this_page;?></h1>
    <p>Name : <input type="text" ng-model="name" placeholder="Enter name here"></p>
    <h1>Hello {{name}}</h1>
</ng-app>
</body>
Run Code Online (Sandbox Code Playgroud)

并且我用ng-app作主/根组件选择器,将ng-app元素的innerHTML 替换为组件的HTML。

@Component({
  selector: 'ng-app',
  template:'<h1>App works</h1>";
  directives: [UsersComponent]
})
Run Code Online (Sandbox Code Playgroud)

ng-app现在的innerHtml 变为<h1>App works</h1>。我希望ng-app保留以前的内容。

如果这不可能,我可以做下面的事情。

<body>
      <ng-app> 
        <h1><?php echo $heading_this_page;?></h1>
        <p>Name : <input type="text" ng-model="name" placeholder="Enter name here"></p>
        <h1>Hello {{name}}</h1>
        <render-component-here></render-component-here>
    </ng-app>
    </body>
Run Code Online (Sandbox Code Playgroud)

ng-app我的主要组件在哪里(加载时引导)在哪里,它应该在<render-component-here></render-component-here>元素中呈现其数据(而不是通过替换以前的内容本身)

Viv*_*shi 2

<ng-content>是您查询的答案

更改您的代码

从 :

@Component({
  selector: 'ng-app',
  template:'<h1>App works</h1>";
  directives: [UsersComponent]
})
Run Code Online (Sandbox Code Playgroud)

到 :

@Component({
  selector: 'ng-app',
  template:'<h1>App works</h1> <ng-content></ng-content>";
  directives: [UsersComponent]
})
Run Code Online (Sandbox Code Playgroud)

如果您想了解有关 ng-content 的更多信息: https://scotch.io/tutorials/angular-2-transclusion-using-ng-content