Как я могу использовать разные html-шаблоны для одного и того же файла typescript?

#angular #typescript

#angular #typescript

Вопрос:

Мне нужно использовать разные HTML-шаблоны для одного и того же файла typescript, основанные на выражении в моем конструкторе. это возможно?

Мне нужно что-то вроде:

 <div class="container-fluid">
     <app-teste1 *ngIf="teste == '1'>
     <app-teste2 *ngIf="teste == '2'>
</div>
  

и в конструкторе:

 this.teste = 1
  

Итак, первый компонент должен быть визуализирован (app-teste1).

Но у моего компонента много свойств, есть другой способ сделать это, не передавая различные свойства ввода / вывода?

Ответ №1:

Я не думаю, что это доступно в angular сейчас ( angular 8.0.0-beta.13 ).

Вы можете манипулировать деревом DOM и отображать его разными способами, но загрузка другого файла шаблона ( .html ) в angular на данный момент невозможна.

Ответ №2:

Вы можете наследовать от базового класса и использовать другой шаблон. Что-то вроде этого:

 @Component({
  selector: 'app-teste1',
  template: `<div>this is app-teste1</div>`
})
export class TestOneComponent {
    // ...
}

@Component({
  selector: 'app-teste2',
  template: `<div>this is app-teste2</div>`
})
export class TestTwoComponent extends TestOneComponent {
    // ...
}