角度4模板没有组件?

时间:2017-08-21 12:52:57

标签: angular

有没有办法申报/使用"模板"角度为2/4的片段? 假设我有2个组件,其中有一些重复的部分,我不想让这个部分成为@Component。反正有没有避免它? 假设以下片段:

<div class="col-md-6 no-padding">
    <label for="to_date">To</label>
    <datetime id="to_date" [(ngModel)]="to_date" [timepicker]="false" 
              (ngModelChange)="onToDateChanged($event)" 
              [datepicker]="to_options">
   </datetime>
</div>

我不想在每个页面上声明这个div我需要一个日期时间选择器,而且我也不想让它成为@Component。 任何建议/解决方法/帮助?

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是在父级中定义模板,并使用ngTemplateOutlet将其传递给您的孩子。

https://angular.io/api/common/NgTemplateOutlet

尝试查看此文章以获取更多信息:

http://blog.angular-university.io/angular-ng-template-ng-container-ngtemplateoutlet/

一个简单的潜在解决方案,接近你想要的:

您可以在父组件中定义模板:

<div #myTemplate>Hello</div>

然后使用ViewChild获取对它的引用:

@ViewChild('myTemplate') templateForChild;

然后您可以将它传递给您的孩子:

<your-component [template]='templateForChild'></your-component>

然后在组件中接受它作为输入:

public class YourComponent {
    @Input() template: TemplateRef;
    ....
}