Как загрузить ng-шаблон в отдельный файл?
В приведенном ниже примере я использовал ng-template
как ниже и работает нормально.
Пример ссылки: нажмите здесь
<ng-template #template let-dataSource="">
<span *ngIf="dataSource.iconCss" class="e-menu-icon {{dataSource.iconCss}}"></span> {{dataSource.header}} {{dataSource.text}}
<span *ngIf="dataSource.templateHeader" class="e-login-content">
<button ejs-button cssClass="e-info">Sign In</button>
</span>
</ng-template>
Но я хочу создать новый файл для ng-template
содержание, и я хочу использовать его в другом файле. Я пробовал, как показано ниже, но не работает. Пожалуйста, помогите мне найти решение для этого случая.
template.html
<ng-template #template let-dataSource="">
<span *ngIf="dataSource.iconCss" class="e-menu-icon {{dataSource.iconCss}}"></span>
{{dataSource.header}} {{dataSource.text}}
<span *ngIf="dataSource.templateHeader" class="e-login-content">
<button ejs-button cssClass="e-info">Sign In</button>
</span>
</ng-template>
default.html
<div class="control-section">
<ejs-menu #menu [items]='dataSource' [fields]='menuFields'>
<ng-container *ngTemplateOutlet="template;"></ng-container>
</ejs-menu>
</div>
Образец 2: образец 2
ref stackru вопрос: angular2 ng-шаблон в отдельном файле
4 ответа
Я получил ответ на этот вопрос от github angular, пожалуйста, проверьте это https://github.com/angular/angular/issues/27503
Ответ:
шаг 1:
я инициализировал свой шаблон как новый компонент, как показано ниже
template.component.ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-device',
template: `
<span *ngIf="dataSource.iconCss" class="e-menu-icon {{dataSource.iconCss}}"></span>
{{dataSource.header}} {{dataSource.text}}
<span *ngIf="dataSource.templateHeader" class="e-login-content">
<button ejs-button cssClass="e-info">Sign In</button>
</span>
`
})
export class DeviceComponent {
@Input()
dataSource: any;
}
Затем я использовал этот шаблон компонента в моем родительском компоненте, как показано ниже
default.html
<div class="control-section">
<ejs-menu #menu [items]='dataSource' [fields]='menuFields'>
<ng-template #template let-dataSource>
<app-device [dataSource]="dataSource"></app-device>
</ng-template>
</ejs-menu>
</div>
образец ссылка образец нажмите меня
Вы можете иметь компонент для ваших шаблонов (назовите его tplComponent
) и внутри, создайте столько шаблонов, сколько захотите. Затем в других компонентах получите экземпляр tplComponent
и получить шаблон от этого. Вот вопрос, который имеет пример такого подхода (хотя я еще не пробовал).
Пожалуйста, дайте мне знать, если это работает.
Вы можете использовать *ngTemplateOutlet для архивации того же
Пожалуйста, обратитесь по ссылке ниже
Я не думаю, что вы предполагаете такие шаблоны. Просто создайте классический компонент и, если вам нужна ссылка на шаблон, оберните его в
ng-template
.