질문을 올바르게 물어 볼 지 모르지만 다른 구성 요소간에 배열 객체를 공유하는 데 사용되는 서비스가 있습니다. 그러나 새 객체를 서비스에 제출하면 무언가가 내 서비스 배열의 다른 모든 객체를 업데이트하고 있습니다.Angular2 Observable Observable 사적인 변수 업데이트
즉 제 푸시 응답의 = [{questionId : 1 값 : 1}]와 제 푸시 {questionId : 1 값 : 3} 응답의 = [{questionId : 1, 값 3}, { 질문 ID : 1, 값 : 3}]
새로 푸시 된 응답 개체의 값과 일치하도록 값이 변경되는 방식에 유의하십시오.
이
이 내 구성 요소를 기본적으로export class LevelComponent {
subscription: Subscription;
answer: Answer = {questionId: 0, value: 0};
a: Answer[];
constructor(public route: ActivatedRoute, public answerService: AnswerService) {
}
ngOnInit() {
this.subscription = this.answerService.answers$.subscribe(item => this.a = item);
}
ngOnDestroy() {
// prevent memory leak when component is destroyed
this.subscription.unsubscribe();
}
submitAnswer(e){
console.log(e.target.id);
this.answer.questionId = 1;
this.answer.value = e.target.id;
this.answerService.addAnswer(this.answer);
}
난에 '공유'여러 구성 요소에서 답변의 배열을 찾고 있어요,하지만 BehaviorSubject 및 구독의 제한으로 이해 내 서비스
export interface Answer {
questionId: number;
value: number;
}
private answers: Answer[] = [];
private _answers: BehaviorSubject<Answer[]> = new BehaviorSubject([]);
public answers$ = this._answers.asObservable();
addAnswer(answer: Answer) {
this.answers.push(answer);
this._answers.next(this.answers);
}
입니다 서비스중인 배열에 새 항목을 추가 한 후에 다른 모든 객체를 업데이트하는 이유에 대해 당황 스럽습니다. 참고로, 만약 내가 단지 숫자가되도록 변수 var를 변경하면, 배열의 값은 응답을 제출할 때 변경되지 않습니다.
여기 내가보고있는 것을 보여주는 Plunker입니다. 아마
* "다른 모든 개체 업데이트"* 무엇을 의미합니까? [mcve]를 줄 수 있습니까? – jonrsharpe
이 응답 개체의 업데이트 방법에 대한 예제로 업데이트되었습니다. – utd1878
@jonrsharpe가 플 런커를 추가했습니다. – utd1878