Issue
У вас проблема с постоянным значением formName
.Вы выбрали сервисный подход для связи между различными компонентами, что правильно, однако вы немедленно уведомляете компонент через Обозреватель.Но компонент (modal
) еще не появился.
Если вы сохраните formName
через modal
и откроете другой modal
, так как уведомление уже отправлено, и этот новый модал Subscriber
не будет знать, что произошло впрошлое.
Решение
Так что исправьте эту проблему, чтобы сохранить последнее сохраненное значение в службе, которую вы уже выполняете.
Так что просто замените ваш Subject
на BehaviorSubject
. BehaviorSubject
имеет характеристику, в которой хранится значение current
.Это означает, что вы всегда можете напрямую получить последнее переданное значение из BehaviorSubject
.
form-new.service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Subject } from 'rxjs/Subject';
import 'rxjs/add/operator/map';
@Injectable({
providedIn: 'root'
})
export class FormNewService {
public FormName:String;
public newFormSubject = new Subject<any>();
public newNameFormSubject = new BehaviorSubject(); // changed
constructor() { }
get events$ () {
return this.newFormSubject.asObservable();
}
get eventsName$ () {
return this.newNameFormSubject; // changed
}
sendFormName(formInfo) {
this.newFormSubject.next(formInfo);
this.FormName=formInfo;
this.getFormName(this.FormName);
}
getFormName(formname) {
this.newNameFormSubject.next(formname);
}
}
Примечание. Возможно, вам придется изменитьдругие subject
, если у вас есть аналогичные функции для newNameFormSubject