Это ошибка в документации.
Смотрите здесь:
export class Login {
static readonly type = '[Auth] Login';
constructor(public payload: { username: string, password: string }) {}
}
и здесь:
login({ patchState }: StateContext<AuthStateModel>, { payload: { username } }: Login) {
Это ошибка деструктуры, которая должна быть:
@Action(Login)
login({ patchState }: StateContext<AuthStateModel>, { payload }: Login) {
return this.authService.login(payload).pipe(tap((result: { token: string }) => {
patchState({ token, username: payload.username });
}))
}
Это разрушает логин payload
и затем ссылку username
через payload.username
.
Учетные данные отправляются в восходящем направлении, а токен возвращается в нисходящем направлении. AuthStateModel исправляется через StateContext.
Git Blame authentication.md
Что такое разрушение?
{ payload: { username } }
- это Разрушающее назначение
. В контексте параметра функции это означает, что «в этом объекте меня интересуют эти свойства». Глядя на login()
, это означает: «Меня интересует только username
(что неверно, как указано выше).
Надеюсь, это поможет!
UPDATE:
Это исправление было объединено в # 653 .
Просто чтобы уточнить:
let a = { payload: { username: { first: 'rafael', last: 'cepeda' } } };
let { payload: { username } } = a;//unwraps payload.username
console.log(username);//works
console.log(payload);//error
Исправлено:
let a = { payload: { username: { first: 'rafael', last: 'cepeda' } } };
let { payload } = a;//unwraps payload
console.log(payload.username);//works
console.log(payload);//works