다른 구성 요소 (부모) 안에 구성 요소 (하위 구성 요소)가 있습니다. 자식을 호출하는 태그는 router-outlet
입니다. 이 상황에서 나는 EventEmitter
과 Output
을 사용할 수 없기 때문에 부모 변수를 변경할 수있는 서비스를 작성했지만 작동하지 않습니다.Angular 2의 서비스를 통한 업데이트가 없음
서비스 :
import {Subject} from 'rxjs/Subject';
import {Injectable} from '@angular/core';
@Injectable()
export class TabStatusService {
private sub=new Subject<boolean>();
dataStatus$ = this.sub.asObservable();
changeStatus(data:boolean){
this.sub.next(data);
}
}
부모 :
@Component({
...
providers:[TabStatusService]
})
export class SecondarytabsComponent implements OnInit {
private status:boolean=false;
constructor(private tabStatusService: TabStatusService) {
ngOnInit() {
this.tabStatusService.dataStatus$.subscribe(
data => {
this.status = data;
});
}
}
템플릿 :
<div>
<p>{{status}} </p>
</div>
<router-outlet></router-outlet>
아이 :
@Component({
....
providers:[ConfirmationService, TabStatusService]
})
export class ProceduresComponent implements OnInit {
constructor(private confirmationService: ConfirmationService, private tabStatusService:TabStatusService) {
}
ngOnInit() {
}
setStatus(value){
this.tabStatusService.changeStatus(value);
}
}
템플릿 :
<div>
<button type="button" class="btn btn-primary btn-lg btn-block login-button"(click)="setStatus(true)">Back</button>
</div>
어디에서 문제가 발생합니까?
는
"작동하지 않습니다"는 문제에 대한 설명이 아닙니다. 그게 효과를 내기 위해 무엇을하려 했습니까? –
자식 버튼을 클릭하면 부모의 "status"변수가 false에서 true로 변경됩니다. – dstyle
왜 모든 구성 요소에'공급자 : [TabStatusService]'가 있습니까? – zeroflagL