не может соответствовать никаким маршрутам после входа в систему с URL-адресом возврата Angular 9 - PullRequest
0 голосов
/ 07 мая 2020

Я использую Angular текущую версию и создаю это приложение для тестирования (поддельный бэкэнд и т. Д.). Кажется, все в нужном месте, я вхожу в систему, учетные данные хранятся в массиве, но когда я пытаюсь войти в систему, у меня возникают некоторые проблемы. Вот отличный код:

Маршруты ts

 {path:'home', component: HomeComponent}, 
  {path:'login', component:LoginComponent},
  {path:'signup', component: SignupComponent},
  {path:'detail/:id', component: UserDetailComponent},
  {path:'', redirectTo:'/login', pathMatch:'full'},

Файл TS входа

ngOnInit(): void {
    this.form = this.fb.group({
      userName: ['', Validators.required],
      password: [null, Validators.required]
    })
  }

  get userName(){return this.form.get('userName')}
  get password(){return this.form.get('password')}

  onSubmit() {
    if (this.form.invalid)
      return
    let credentials = {
      userName: this.userName.value,
      password: this.password.value
    }
    this.authService.login(credentials)
      .pipe(first())
      .subscribe(data => {

        let returnUrl = this.route.snapshot.queryParamMap.get('returnUrl');
        this.router.navigate([ returnUrl ||'/home '])
      })
  }

Когда я пытаюсь войти в систему с действительными учетными данными (хранящимися в localStorage), я получаю эта ошибка:

ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'home%20'
Error: Cannot match any routes. URL Segment: 'home%20'
    at ApplyRedirects.noMatchError (router.js:4396)

Итак, я думаю, что я что-то делаю не так, но я не могу понять, что это такое. Может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 07 мая 2020

Вы должны удалить пробел в ссылке маршрута

this.router.navigate([ returnUrl ||'/home ']) //remove the space

изменить на:

this.router.navigate([ returnUrl ||'/home'])
...