问题
In my angular 5 application, I need to do this on every HTML page
<span *ngIf="item.createTime; else notAvailable">
{{item.createdTime | date:'medium'}}
</span>
and on the end of page create that template
<ng-template #notAvailable>
<span class="text-muted f-12" [innerText]="'N/A'"></span>
</ng-template>
there is repeating the same line of code on every HTML page, so looking for any solution which helps me to create one common component/directive which has only #notAvailable content and can be used on every page with *ngIf?
earlier in angularJS, we can create a separate template file and will be used but in new angular, there is no HTML can be attached in the directive, so a bit confused how to do this?
someone, Please guide me how to achieve this and what need to write in the respective component and HTML?
回答1:
You can create a component ex.: 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>
{{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>
来源:https://stackoverflow.com/questions/53039918/create-a-reusable-template-which-can-be-used-on-various-pages