0
기본적으로 부모 구성 요소의 템플릿에서 반복되는 목록 구성 요소 인 하위 구성 요소가 있습니다. 부모 구성 요소의 하위 구성 요소에있는 메서드를 호출하려고합니다. 메서드를 여러 구성 요소 중 하나에 속하게하고 싶습니다. 예를 들어 부모 구성 요소의 구성 요소 목록에서 Angular2로 자식 구성 요소의 메서드를 호출하는 방법?
이 내 아이의 구성 요소입니다@Component({
selector: 'list-item',
template: '<li>{{value}}</li>',
})
export class ListItem implements OnInit {
@Input value: number;
changeValue(newValue) {
this.value = newValue;
}
}
그리고 이것은처럼 내 부모 구성 요소 모습입니다 - 나는 약 가 장식을 @ViewChild 알고
@Component({
selector: 'list',
template: '<div><list-item *ngFor="let item of items" [value]="item.value"></list-item></div>',
})
export class List implements OnInit {
// Some code to call **changeValue**
// method of the let's say the second
// list-item from the template
}
하지만이에 대한 작업을 것 같다 첫 번째 것만
독립적 인 재사용 가능한 구성 요소로 하위 구성 요소를 고려하십시오. 그래서 pub/sub의 사용은 좋은 생각이 아닙니다.
"value"속성과'changeValue' 메소드를 캡슐화하기 위해 별도의 "model"클래스를 만드는 것이 더 좋을 것이라고 생각합니다. 부모 컴포넌트는이 객체들에 대해'changeValue'를 호출 할 것이고, 자식 컴포넌트는 Angular 2의 변화 탐지 메커니즘을 통해 이러한 변경들에 반응 할 것입니다. 이것이 실용적인 대안처럼 들리지만 명확하지 않은 경우 답변에 세부 정보를 추가 할 수 있습니다. –
내가 말했듯이, 하위 구성 요소를 독립 구성 요소로 간주합니다. 우리는이를 수정할 수 없습니다. – user1532043