Я пытаюсь использовать мой синглтон-сервис в Mat Dialog, но пока не смог этого сделать. Новый экземпляр службы создается при первом открытии диалогового окна, и я получаю неопределенный список userList по адресу user-options-provider.service.ts . Единственная полезная информация, которую я мог получить в Интернете об этом, - то, что Матовый диалог создан вне области для этой услуги. Так есть ли способ использовать мой одноэлементный сервис в компоненте Mat Dialog?
user-options-provider.service.ts
@Injectable({
providedIn: 'root'
})
export class UserOptionsProviderService {
private userList: Array<User>;
private userListObs = new BehaviorSubject<Array<User>>(this.userList);
constructor(private boardsProviderService: BoardsProviderService) { }
setUserList(id: string): void {
this.userList = this.boardsProviderService.getBoard(id).userList;
this.userListObs.next(this.userList);
}
getUserListObs(): Observable<Array<User>> {
return this.userListObs.asObservable();
}
}
user- options.component.ts
@Component({
selector: 'app-user-options',
templateUrl: './user-options.component.html',
styleUrls: ['./user-options.component.css']
})
export class UserOptionsComponent implements OnInit {
userList: Array<User>;
constructor(public dialog: MatDialog,
public dialogRef: MatDialogRef<UserOptionsComponent>,
private userOptionsProviderService: UserOptionsProviderService) {
this.userOptionsProviderService.getUserListObs().subscribe((users: Array<User>) => {
this.userList = users;
});
}
ngOnInit() { }
вызывается и предоставляется в board.component.ts
onClickUserOptions(boardId: string): void {
this.dialog.open(UserOptionsComponent, {
data: {boardId}
});
}