2017-12-13 18 views
0

사용자가 토큰이 포함 된 전자 메일을받은 직후 "Enter new password"화면에서 사용자 암호를 재설정하려고합니다 (새 암호 만들기). 필자는 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 내가 전화하려고 해요 : DaniS에

http://localhost:4200/new-password/[email protected];token=13af5d409878f1dd5ec88049ba82a5549a07deb4 
+0

는 대부분의 경우 오류가 경로를 withing에 자리 잡고 있습니다. 내 이해에 따르면 new-password/: email : 토큰 대신 new-password/: email/: 토큰이어야합니다. 그래도 여전히 작동하지 않으면 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], 
    }, 

그리고 두 PARAMS와 URL :

http://localhost:4200/new-password/[email protected]/13af5d409878f1dd5ec88049ba82a5549a07deb4