2017-12-13 12 views
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 
+0

は、ほとんどの場合、エラーがパスをwithingあります。 私の理解によると、new-password /:email:トークンの代わりにnew-password /:email /:tokenでなければなりません。 これでも動作しない場合は、console.log(params)を試して値があるかどうかを確認してください。 – DaniS

+0

@DanSエラーが表示されます。「エラー:どのルートにも一致しません。 URLセグメント: 'new-password/email'' – Mellville

+0

あなたは電話しようとするURLを投稿してください。 URLは次のようになります。http:// localhost// スラッシュは重要です。私はあなたがスラッシュなしでconcatinated両方の値を持っていると思います。 – DaniS

答えて

0

は、私は解決策を見つけ出すことができました。

//NEW PASSWORD 
    { 
    path: 'new-password/:email/:token', 
    component: NewPasswordComponent, 
    canActivate: [LoginGuard], 
    }, 

そして2つのparamsを持つURL:ルートがなければなりません

http://localhost:4200/new-password/[email protected]/13af5d409878f1dd5ec88049ba82a5549a07deb4 
関連する問題