Угловой шаблон не отображает данные, сгенерированные методом, вызванным из другого компонента

#angular #templates #components #display

#угловой #шаблоны #Компоненты #отображение

Вопрос:

У меня есть два компонента ComponentA и ComponentB

КОМПОНЕНТ A .ts КОД

 export class ComponentA implements OnInit {
 name: string;
 constructor() {}
 
 showName(){ 
    this.name = "Timothy";
    console.log('inside showName'   this.name);
 }
}
  

КОМПОНЕНТ A .html-КОД

  <button (click)="showName()">Click to see the name</button>    <div *ngIf="name?.length>0">{{name}}</div>
  

Когда я нажимаю на кнопку шаблона компонента, я вижу консоль и имя в браузере.

 export class ComponentB extends ComponentA  implements OnInit {
  constructor() { 
   super();
 }
  

}

КОМПОНЕНТ B.html КОД

 <button (click)="showName();">Show The Name</button>
  

Но когда я нажимаю на кнопку ComponentB, я вижу консоль.данные журнала, но имя не отображается в браузере. Кто-нибудь может сказать мне, чего я не сделал

Ответ №1:

Причина в том, что вы не привязываетесь name ComponentB . При наследовании от ComponentA вы получаете только функциональность, реализованную в классе компонента, а не в шаблоне.

В вашем ComponentB шаблоне вам необходимо выполнить следующее:

 <button (click)="showName();">Show The Name</button>
<div *ngIf="name?.length>0">{{name}}</div>
  

Проверьте эту демонстрацию в качестве примера, где я унаследовал AppComponent в ChildComponent

Комментарии:

1. Я хочу, чтобы имя отображалось в шаблоне компонента при нажатии кнопки ComponentB. Я не хочу показывать имя в шаблоне ComponentB