Я пытаюсь узнать о угловых компонентах, но у меня возникают проблемы с их работой в конфигурации вложенных компонентов. В принципе, я хочу, чтобы родительский компонент периодически обновлял значение. Затем я хочу, чтобы внутренний дочерний компонент привязывался к значению в родительском элементе и вызывал вызов $ onChanges при изменении значения.Устранение неисправностей Угловые компоненты
Я сделал jsFiddle, демонстрируя то, что я пытаюсь выполнить. Родительский компонент, похоже, работает и отображает обновленное значение, но по какой-то причине дочерний компонент вообще не отображается. Вот код, я использую для достижения этой цели:
let app = angular.module('app', []);
class ParentController {
constructor($interval) {
this.value = 0;
$interval(() => this.value++, 1000);
}
}
let ParentComponent = {
controller: ParentController,
template: `<div>parent value: {{$ctrl.value}}</div>`
};
app.component('parent', ParentComponent);
class ChildController {
$onChanges(changesObj) {
console.log(changesObj);
}
}
let ChildComponent = {
bindings: {
value: '='
},
controller: ChildController,
require: {
parent: '^^parent'
},
template: `<div>child value: {{$ctrl.value}}</div>`
};
app.component('child', ChildComponent);
И HTML:
<div ng-app="app">
<parent>
<child value="$ctrl.parent.value"></child>
</parent>
</div>
Я делаю что-то неправильно, или то, что я пытаюсь выполнить не представляется возможным?
Спасибо за вашу помощь. Я не знал о опции transclude. Один вопрос: знаете ли вы, есть ли способ, с помощью которого дочерний компонент ChildComponent запускает $ onChanges при изменении родительского значения? – snusnu
Я не верю, что это возможно, нет. Если только дочерний компонент не объявлен в шаблоне родительского компонента, но я не чувствую, что это путь, по которому вы хотите спуститься. –
Игнорировать мой последний комментарий, это действительно возможно. Проверьте мое последнее редактирование! –