私はこのインストラクターを持っています
app/
--pages/
----pages.component.ts
--channel/
----shared/
------assignPlaylist.modal.ts
pages.component.ts 内に、プレイリストという変数があります。
export class PagesComponent {
@Input() platform: Platform;
@Output() onPlaylistsChange: EventEmitter<Playlists>;
currentPageName: string;
currentPage: Page;
pages: Array<Page>;
playlists: Playlists;
}
assignPlaylist.modal.ts で http ポスト メソッドを作成すると、新しいプレイリストが返されます。返されたプレイリストを使用して、pages.component.ts のプレイリストを置き換える必要があります。
this.apiService.addPlaylistToPage(playlistId, stDate, etDate, this.apiService.getGlobalRegion(), callback)
.subscribe(
data => {
if (this.apiService.g_platform == 'DESKTOP') {
this.apiService.getPlaylist(this.apiService.getCurrentPage(), 'true' )
.subscribe(
res => { this.pagesService.setCurrentPlaylists(res.playlists);
}
);
} else {
this.apiService.getPlaylist(this.apiService.getCurrentPage(), 'false' )
.subscribe(
res => { this.pagesService.setCurrentPlaylists(res.playlists);
}
);
}
}
);
そして、これはプレイリストの構造体です
export class Playlists {
headerPlaylists: Array<Playlist>;
bodyPlaylists: Array<Playlist>;
wholePlaylists: Array<Playlist>;
}
----------------更新------------------------------------- 回答で述べたように、次の変更を行いました.
@Injectable()
export class PagesService {
private currentPlaylists: Subject<Playlists> = new BehaviorSubject<Playlists>(new Playlists());
getCurrentPlaylists() {
return this.currentPlaylists.asObservable();
}
setCurrentPlaylists(playlists: Playlists) {
console.log('i am here');
this.currentPlaylists.next(playlists);
}
}
コンソールに「I am here」と表示され、
私は自分のpages.component.tsに書いています
constructor(private service: PagesService, private playlistService: PlaylistService) {
this.pages = [];
this.currentPage = new Page();
this.service.setCurrentPage(this.currentPage);
this.playlists = new Playlists();
this.onPlaylistsChange = new EventEmitter<Playlists>();
this.service.getCurrentPlaylists().subscribe((playlists) => {
console.log(playlists, 'new playlists coming');
this.playlists = playlists;
}, error => {
console.log(error);
});
}
しかし、「新しいプレイリストが来る」というメッセージが表示されませんでした。使い方が間違っていますか?
新しい更新: this.playlists を確認しました。オブザーバーが 0 です。なぜですか?