0
ユーザーがトークンを使用して電子メールを受信した直後に、この新しいパスワードの入力画面でユーザーのパスワードをリセットしようとしています(新しいものを作成しています)。私のコンポーネントでは、ActivateRouteを使用してURLのトークン(トークン、電子メール、パスワード)を取得し、これらのパラメータをAPIに送信する必要がありますが、これまでのところ、コンポーネントの右側に「未定義」があります。これはActivateRouteです:角度4:URLのユーザーパラメータ捕捉の問題
export class NewPasswordComponent implements OnInit {
public loginValues = new User([]);
// Constructor & init
constructor(
private auth: AuthService,
private router: Router,
private userService: UserService,
private snackBar: MatSnackBar,
private activatedRoute: ActivatedRoute,
) {
this.activatedRoute.params.subscribe(params => {
console.log(params['email']);
console.log(params.email); -> undefined
this.loginValues.email = params['email'];
this.loginValues.token = params['token'];
});
}
clientNewPassword() {
this.userService.newPassword(this.loginValues, passwordSent => {
this.router.navigateByUrl('/login');
});
}
サービス(HTMLに新しいパスワードを送信で呼び出される)サービスとcomunicatesコンポーネント方法:
public newPassword(user: User, callback: (passwordSent: User) => void) {
return this.restangular
.all('auth/reset')
.customPOST(user.toJSONNewPassword())
.map((res) => res.data)
.subscribe({
next: (res: User) => {
this.user = new User(res);
callback(this.user);
},
});
}
とルートを:
//NEW PASSWORD
{
path: 'new-password/:email:token',
component: NewPasswordComponent,
canActivate: [LoginGuard],
},
誰かが私を助けることができますか?私が呼んしようとしている
URL:
EDITおかげダニスヒントに基づいて
http://localhost:4200/new-password/[email protected];token=13af5d409878f1dd5ec88049ba82a5549a07deb4
は、ほとんどの場合、エラーがパスをwithingあります。 私の理解によると、new-password /:email:トークンの代わりにnew-password /:email /:tokenでなければなりません。 これでも動作しない場合は、console.log(params)を試して値があるかどうかを確認してください。 – DaniS
@DanSエラーが表示されます。「エラー:どのルートにも一致しません。 URLセグメント: 'new-password/email'' – Mellville
あなたは電話しようとするURLを投稿してください。 URLは次のようになります。http:// localhost// スラッシュは重要です。私はあなたがスラッシュなしでconcatinated両方の値を持っていると思います。 –
DaniS