创建可在各个页面上使用的可重用模板

时间:2018-10-29 06:30:49

标签: html angular ngif

在我的angular 5应用程序中,我需要在每个HTML页面上执行此操作

<span *ngIf="item.createTime; else notAvailable">
   &nbsp;{{item.createdTime | date:'medium'}}
</span>

并在页面末尾创建该模板

<ng-template #notAvailable>
    <span class="text-muted f-12" [innerText]="'N/A'"></span>
</ng-template>

每个HTML页面上都重复相同的代码行,因此寻找任何可以帮助我创建一个通用组件/指令的解决方案,该组件/指令仅具有#notAvailable内容,并且可以与*ngIf一起用于每个页面?

之前在angularJS中,我们可以创建一个单独的模板文件并使用它,但是在新的angular中,指令中无法附加HTML,因此如何执行此操作有些困惑?

有人,请指导我如何实现这一目标,以及需要在相应的组件和HTML中编写什么内容?

1 个答案:

答案 0 :(得分:2)

您可以创建一个组件,例如:CreatedTimeComponent created-time.component.ts

@Component({
  selector: 'app-created-time',
  templateUrl: './created-time.component.html',
  styleUrls: ['./created-time.component.scss']
})
export class CreatedTimeComponent {
  Input()
  createdTime: Date;
}

created-time.component.html

<ng-container *ngIf="createdTime; else notAvailable">
  <span>
     &nbsp;{{createdTime | date:'medium'}}
  </span>
</ng-container>
<ng-template #notAvailable>
  <span class="text-muted f-12">N/A</span>
</ng-template>

some-other.component.html

<h2>My some other component<h2>
<app-created-time [createdTime]="item.createdTime"></app-created-time>