有人知道为什么"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect" : "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS" : "<Account-ID-of-Account-A>"
}
}
]
}
运算符不起作用吗?
我尝试改用第二个switchMap
运算符,但是它起作用了,但是我不明白为什么map
不起作用。
switchMap
答案 0 :(得分:0)
仅使用map
运算符代替switchMap
,如下所示:
@Effect()
createPizzaSuccess$ = this.actions.ofType(fromPizzasActions.CREATE_PIZZA_SUCCESS).pipe(
map(action => action.payload),
map(pizza => new fromRouterActions.Go({path: ['products', pizza.id]}))
);
switchMap
运算符期望Observable
。例如,要返回HttpClient.get
的结果:
@Effect()
createPizzaSuccess$ = this.actions.ofType(fromPizzasActions.CREATE_PIZZA_SUCCESS).pipe(
map(action => action.payload),
switchMap(pizza => this.httpClient.get(URL))
);
但是在您的情况下,发出的值只是一个Action
,因此map
运算符是正确的选择,就像您从payload
中提取action
一样。 / p>
还请注意,switchMap
需要一个流,您可以提供Observable,Promise,Array或Iterable。
这意味着,在NgRx
的情况下,对于一个effect
返回多个动作可能很有用,因此一系列动作:
@Effect()
createPizzaSuccess$ = this.actions.ofType(fromPizzasActions.CREATE_PIZZA_SUCCESS).pipe(
map(action => action.payload),
switchMap(pizza => [
new fromUIActions.showNotification({ message: 'Pizza loaded' }),
new fromRouterActions.Go({path: ['products', pizza.id]})
])
);
更多说明: