Я пытаюсь отправить свои objectData из компонента A в DialogComponent для редактирования информации об объекте.
ComponentA открывает диалоговое окно и передает данные следующим образом:
export class ComponentA implements OnInit {
constructor(private dialogService: NbDialogService) {}
openDialog(data) {
this.dialogService.open(DialogComponent, {
context: {
product: data,
},
});
}
}
Nebular DialogComponent выглядит так:
export class DialogComponent implements OnInit {
product: any; <--- the object that the dialogue will receive
preSaleItem: any; <-- and turn into it, within the dialogue.
constructor(
private ref: NbDialogRef<DialogComponent>,
private dataService: DataService,
) {
}
navigateToComponentB() {
this.dataService.data = this.preSaleItem;
this.router.navigate(['/pages/componentB']);
this.close();
}
close() {
this.ref.close();
}
в диалоговом окне заполнит preSaleItem новой информацией и песком для компонентаB.
Я пробовал два способа передачи данных, один - сервисом.
export class DataService {
data: any;
constructor() {
console.log(this.data); <----- the return is undefined
}
И ничего не возвращается. Я думаю, что диалог компонента Nebular убивает прицел.
Мой ComponentB, который получит данные:
export class ComponentB implements OnInit {
constructor(private dataService: DataService) {}
ngOnInit() {
this.preSaleItem = this.dataService.data;
console.log(this.preSaleItem); <----- return is the same of the service
}
}
Дополнительная информация о проблеме: у меня есть компонент A, который передает продукт в диалоговое окно и создает preSaleItem, о котором я упоминал ранее, и который хорошо работает.
После этого, когда preSaleItem был построен в диалоговом окне, мне нужно отправить его компоненту B. Но как я думал, через сервис не работает. :(
Я попытался не проходить через диалог, используя componentA для обслуживания с наблюдаемой переменной для componentB, и это сработало. Но мне нужны данные, чтобы пройти через диалог.
Какие есть возможные решения?