나는 몇 가지 바인딩 속성을 노출하고 다음과 같이 사용할 수 있습니다 내 루트 페이지에서 구성 요소가 있습니다. 더 읽기와Angular2/Ionic2 : 새로 고침 구성 요소
<myprogress [value]="order.currentStage" [max]="order.totalStages"></myprogress>
:
는<myprogress [order]="order"></myprogress>
이의 일부까지 잘 작동
@Directive({
selector: 'myprogress[order]'
})
export class OrderProgress {
@Input('order') order: Order;
constructor(private baseComponent: Progress) {}
ngOnInit() {
this.baseComponent.value = this.order.currentStage;
this.baseComponent.max = this.order.totalStages;
}
}
이 날 같은 전화를 대체 할 수 있습니다 : 그래서 다음과 같은 몇 가지 지침을 만들어 응용 프로그램이 순서 자체를 변경합니다. 이 경우 이미 렌더링 된 myprogress
구성 요소는 업데이트되지 않습니다. 그 이유도 알 수 있습니다. ngOnInit
함수는 구성 요소가 렌더링 될 때 한 번만 실행되며 지시문의 일부 속성이 변경되었고 value
및 max
의 새 값을 계산해야 함을 지시문에 표시 할 방법이 없습니다.
이 문제를 해결할 방법이 있습니까? 내가 가진
한 가지 가능한 해결책은 이것이다 :
- 수정
Progress
구성 요소는 숫자뿐만 아니라 숫자를 반환하는 함수를 적용합니다.this.baseComponent.value =() => this.order.currentStage
을하지만 그것은뿐만 아니라 Progress
구성 요소를 변경하는 나를 필요 OrderProgress
의 ngOnInit
, 바인드에서
Progress
또는 Order
을 변경할 필요가없는 방법이 있습니까?
나는 당신을 분명히 이해한다면''Subject''에 대한 답을 볼 수 있습니다. child 지시문에 반영된 상위 구성 요소 순서의 변경 사항을 원합니다. 부모의 순서가 바뀌면 child 지시어의 검출 변화 값이 바뀌지 않을까요? – raj
나는 당신이 요구 한 것을 이해하지 못해 죄송합니다. 질문을 조금이라도 바꿔 줄 수 있습니까? – AweSIM