관찰 가능 변경사항이 보기에 반영되지 않음
나는 기본적으로 관찰 가능한 데이터 서비스를 구현하기 위해 이 가이드를 따랐다.
스토어 클래스에서 (ItemsStore
) 나는 내 것을 가지고 있다.BehaviorSubject
그 품목들의 리스트가 들어 있는
items:BehaviorSubject<List<Item>> = new BehaviorSubject(List([]));
구성 요소는 다음과 같이 템플릿의 저장소를 사용한다.
<ion-slide *ngFor="let item of itemStore.items | async" >
[...]
</ion-slide>
이제 이것은 앱이 로드될 때 잘 작동한다 - 내 모든 항목이 표시된다.단, 만약 내가 아이템을 에 추가한다면BehaviorSubject
스토어 클래스에서 다음 코드 사용:
this.items.next(this.item.getValue().push(newItem));
이것은 그 견해에 반영되지 않았다.나는 변화 처리가 자동으로 각도2에 의해 이루어진다는 인상을 받았지만, 그런 것 같지는 않다.
이러한 변경 사항이 보기에 반영되도록 어떻게 감지하고 처리할 수 있는가?
네가 말하는 방식이 문제인 것 같아 의심스럽다.
this.items.next(this.item.getValue().push(newItem));
뭔지 모른다.this.item.getValue()
만약을 제외하고 반환하다.push()
방법은 새로운 길이를 반환하는 것과 같다(중요한 것은 다시 돌아오지 않는 것이다).this.items
새 품목이 추가됨.
그async
파이프는 다음과 같이 정의된다.
비동기 파이프는 관찰 가능 또는 약속에 가입하여 비동기 파이프가 내보낸 최신 값을 반환한다.
그래서 당신이 전화할 때this.items.next(...)
비동기 파이프는 새 길이만 수신하고 와 반복하려고 시도한다.*ngFor
.
만약this.item
쥔다<List<Item>>
다음 주소로 전화하십시오.
this.item.getValue().push(newItem);
this.items.next(this.item);
Btw, 그 방법은 당신이 함께 일하고 있다는 사실을 숨기는 데 사용된다.Subject
. 제목이 전화하자.next()
또는complete()
다른 사용자들이 망치는 것을 원하지 않는 것이다.이런 이유로 그냥 아무데나 지나가는 것이 좋다.Observable
보관하다Subject
필요한 곳에 혼자만 있을 뿐이지
항목 속성은 관찰 가능해야 하지만, 이를 동작 하위 제목 유형으로 설정하십시오.링크에는 다음과 같은 항목이 있다.
@Injectable()
export class TodoStore {
private _todos: BehaviorSubject<List<Todo>> = new BehaviorSubject(List([]));
public todos: Observable<List<Todo>> = this._todos.asObservable();
constructor(private todoBackendService: TodoBackendService) {
this.loadInitialData();
}
...
}
따라서 이 튜토리얼을 따른다고 가정하면 다음과 같은 작업을 수행해야 한다.
private _items: BehaviorSubject<List<Item>> = new BehaviorSubject(List([]));
public items: Observable<List<Item>> = this._items.asObservable();
그것을 해결했다 - 그리고 그것은 매우 어리석은 실수였다 - 나는 수치심을 느꼈다. ItemsStore
두 개의 다른 클래스에 주입되며, 의존성 주입은 각 주입에 대한 인스턴스를 생성하기 때문에, 우리는 한 개만 있어야 하는 동일한 종류의 두 개를 갖게 된다.
종속성 이동(ItemsStore
)을(를) 글로벌 제공업체 어레이에 전달하여 문제를 해결했다.
참조URL: https://stackoverflow.com/questions/39703167/changes-in-observable-not-reflected-in-view
'IT이야기' 카테고리의 다른 글
리액션 후크 사용 방법내 경우 한 번만 효과? (0) | 2022.03.11 |
---|---|
vue js html로 지정된 형식으로 데이터를 여러 번 선택하고 전달할 수 있는 방법은? (0) | 2022.03.11 |
Vue.js는 라우터 뷰를 통해 전달된 데이터를 브라우저의 devtools에서 볼 수 있어야 하는가? (0) | 2022.03.11 |
스위치맵 운영자가 약속과 함께 사용할 때 마지막 값만 내보내는 이유는? (0) | 2022.03.10 |
Vue-Router가 단일 페이지 애플리케이션에서 재라우팅되지 않음(Vue/Laravel) (0) | 2022.03.10 |