저는 Angular2 초보자이며 테스트 노트 작성 앱을 만듭니다. 앱은 간단합니다 : NotesContianerComponent
은 getNotes()
및 addNote()
방법을 사용하는 NoteService
에 연결됩니다.각도 - Angular2가 서비스에서 자동으로 데이터를 업데이트하는 방식을 볼 수 없습니다.
NotesContainerComponent
에서 서비스에서 반환 된 데이터를 구성원 myNotes
및 ngOnInit
이벤트에 저장하고 배열을 새로 고칩니다. 나는 현재 그 코드에서 배열을 만지지 않을 것이다. 내가 양식을 사용하여 새 메모를 추가하고 NotesContainerComponent
에서 서비스의 addNote()
메서드를 호출 할 때 지금
는 메모는 백엔드 모의 노트 배열에 추가됩니다 않지만, 동시에 UI (즉 NotesContainerComponent
) 업데이트됩니다 자동으로 새 메모가 표시됩니다. 수동으로 새로 고치려면 아무 것도하지 않습니다.
조사를 위해 console.log()
을 getNotes
서비스 방법에 추가했으나 처음으로 전화하는 사람은 ngOnInit
입니다.
알아낼 수없는 점은 Angular2가 자동으로 서비스를 쿼리하지 않고도 새 메모를 어떻게 알 수 있습니까? 그리고 이것을 멈추는 방법? 모든 단서가 인정 될 것입니다. 참조
NotesContainerComponent
코드 :
export class NotesContainerComponent implements OnInit {
constructor(
private noteService: NoteService
) { }
addNote(newNote):void {
this.noteService.add(newNote);
}
myNotes: Notes[];
ngOnInit() {
this.noteService.getNotes()
.then(notes => this.myNotes = notes);
}
}
'myNotes'는 getNotes() 메소드를 통해서만 업데이트 될 수있는 구성 요소의 로컬 배열을 참조합니다. 그래서 그렇게 할 수 없습니까? –
@aditya_m 정확히 그 경우입니다. 'add' 메쏘드로 그것을 업데이트하면 배열이 바뀝니다. 'this.myNotes'는이 로컬 배열을 참조하기 때문에 또한 변경됩니다. – echonax
'add' 메쏘드는 서비스에 속해 있으며, 구성 요소의 로컬 배열이 아닌 서비스에있는 모의 배열을 업데이트합니다. –