Я использую свою собственную службу данных в Angular с помощью метода save()
, который может запускать создание или обновление на стороне сервера. Но прежде чем отправлять данные на сервер, необходимо убедиться, что данные действительны или нет.
Если данные недействительны, связь с сервером не произойдет.
Вот код:
save(data: T): Observable<boolean> {
const preparedData = JSON.stringify(data.prepareToSave());
if (!data.isValid) {
// if data is invalid we should return before send datas to server
return new Observable<T>().pipe(map(() => false));
}
if (!data.id) {
// create
return this.http.post(this.url, preparedData, this.options)
.pipe(map(() => true));
} else {
// update
return this.http.put(this.url + '/' + data.id, preparedData, this.options)
.pipe(map(() => true));
}
}
Теперь, если data
недействительно, мне нужно вернуть Observable<boolean>
с false
.
В компоненте у меня есть этот код:
saveDatas() {
this.dataService.save(this.customer).subscribe( (resolve: boolean) => {
if (resolve) {
// save OK
} else {
// save failed (1)
}
}, (error: any) => {
// save failed (2)
});
}
Если сбой сохранения из-за того, что this.customer.isValid
равен false
, тогда я ожидаю, что subscribe
получит false
от dataService. Именно из этой строки:
if (!data.isValid) {
// if data is invalid we should return before send datas to server
return new Observable<T>().pipe(map(() => false));
}
Но что-то идет не так, и я не могу понять, в чем ошибка.
Почему бы не вернуть службу данных с false
?