Я пытаюсь реализовать следующую функциональность. Когда нажимается кнопка для проверки условия, условие должно быть переменной (или суммой в моем случае), отличной от неопределенной (если отличается, то успех). Затем либо перейти на страницу успеха, если условие выполнено, либо отобразить страницу отказа, если условие не выполнено (+, если на странице ничего не изменилось, просто перейдите на страницу успеха).
.html
<div class = "d-flex justify-content-center">
<button type = "button" (click) = "updatePost()" routerLink = "/success-page">Save</button>
Метод updatePost()
в файле .ts
просто вызывает функцию из службы и обновляет пользователя, если некоторые свойства изменены (у меня есть несколько текстовых полей ввода в файле .html
).
updatePost() {
this.sharedservice.updateUser(this.user).subscribe(response => {
}, error => {
console.info(error);
})
}
Я пробовал много способов, но функциональность неверна. Проблема может заключаться в том порядке, в котором я пытался вызвать функцию и реализовать логику.
Обе страницы зарегистрированы как routes
.
const routes: Routes = [
{path: 'success-page', component: DisplaySuccessComponent},
{path: 'fail-page', component: DisplayFailPageComponent},
];
вы не должны использовать routerLink в этом случае, а перемещаться внутри функции upadtePost()
, т.е.:
updatePost() {
this.sharedservice.updateUser(this.user).subscribe(
response => {
this.router.navigate('/success-page');
},
error => {
console.info(error);
this.router.navigate('/fail-page');
});
}
Для этого вы должны использовать Router из конструктора. Для этого вам нужно предоставить конструктор (частный маршрутизатор: маршрутизатор) {}, затем вам нужно проверить, что переменная не должна быть неопределенной, нулевой или не ожидаемой, тогда вам нужно направить как this.router.navigate(['fail-page']); и если не undefined, не null и как и ожидалось, вы можете перемещаться с помощью this.router.navigate(['success-page']);. Итак, ваш окончательный код, как показано ниже: -
// В HTML:-
<button type = "button" (click) = "updatePost()">Save</button>
// В ТС:-
updatePost() {
this.sharedservice.updateUser(this.user).subscribe(response => {
this.router.navigate(['success-page']);
}, error => {
this.router.navigate(['fail-page']);
console.info(error);
})
}