ViewChild vs content child - PullRequest
       0

ViewChild vs content child

0 голосов
/ 10 апреля 2020
@Component({
  selector: 'demo-app',
  styles: [
    'todo-app { margin-top: 20px; margin-left: 20px; }'
  ],
  template: "
    <content>
      <todo-app>
        <app-footer>
          <small>Yet another todo app!</small>
        </app-footer>
      </todo-app>
    </content>
  "
})  
export class AppComponent {}
****************
//todo-app-comp
{
    @Component(...)
    class TodoAppComponent implements AfterContentInit {
      @ContentChild(FooterComponent) footer: FooterComponent
      ngAfterContentInit() { this.footer now points to the instance of "FooterComponent"
      }
    }
}

`В приведенном выше фрагменте мы определяем еще два компонента: FooterComponent и AppComponent. FooterComponent визуализирует весь контент, передаваемый между открывающим и закрывающим тегами своего хост-элемента (контент, который будет проецироваться). С другой стороны, AppComponent использует TodoAppComponent и передает FooterComponent между его открывающим и закрывающим тегами. Исходя из нашей терминологии, приведенной выше, FooterComponent является потомком содержимого TodoAppComponent. Мы можем получить к нему доступ следующим образом:

Теперь мой вопрос здесь. почему мы просто не использовали ViewChild в компоненте todo-app для доступа к intest app-fotter? `

1 Ответ

0 голосов
/ 10 апреля 2020

так что я знаю, что мы используем content-child, когда есть проекция контента. теперь, когда я знаю, что в моем компоненте todo-app мы проектируем нижний колонтитул. Тогда почему бы просто не использовать viewChild внутри компонента todo-app?

Это потому, что 'ViewChild ссылается на дочерний элемент, присутствующий внутри самого шаблона шаблона ref', поэтому компонент app-footer / footer внутри его шаблон, но на самом деле был спроектирован. Просто хочу прояснить концепцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...