我正在创建一个Ngrx Angular 2应用程序,并试图让我的http调用在一段时间后继续轮询.我已经看到了该interval()函数的使用,但是在Ngrx的情况下,当内部完成服务调用时@Effect(),它会产生错误.请指教:
@Injectable()
export class TasksEffects {
constructor(
private actions$: Actions,
private TS: TaskService
){}
@Effect()
onLoadTasksLoadTasks$: Observable<Action> = this.actions$.ofType(tasksActions.ActionTypes.LOAD_TASKS)
.switchMap(() => {
return this.TS.index()
.map((res) => new tasksActions.LoadTasksSuccessAction(res.json()))
.catch(err => of(new tasksActions.LoadTasksFailAction(err)));
});
Run Code Online (Sandbox Code Playgroud)
我想每十秒运行一次switchMap功能.这不起作用.
@Effect()
onLoadTasksLoadTasks$: Observable<Action> = this.actions$.ofType(tasksActions.ActionTypes.LOAD_TASKS)
.switchMap(() => {
return this.TS.index()
.map((res) => new tasksActions.LoadTasksSuccessAction(res.json()))
.catch(err => of(new tasksActions.LoadTasksFailAction(err)));
}).interval(10000);
Run Code Online (Sandbox Code Playgroud)
类型错误是:
我有一个在 GAE 上运行的应用程序,我有一个在 google kubernetes 引擎上运行的数据库。我已经通过转发端口成功测试了工作数据库kubectl port-forward pod-name 3001:3001并确认它正在工作。
但是我的应用程序无法连接到它。我认为谷歌云项目中的所有应用程序都可以通过本地主机访问。那不是真的吗?
如果没有,那么我如何将我在 GAE 上的应用程序连接到我在 GKE 上的数据库?
我将模板中的异步管道用于所有存储选择值,因为它会自行进行所有清理(包括取消订阅)。
但是,当我在auth gaurd中手动订阅一个值时,我需要取消订阅吗?如果是,那么最好的方法是什么?
@Injectable()
export class AuthGaurd implements CanActivate{
constructor(
private store: Store<fromRoot.State>,
private router: Router
){}
canActivate(){
this.store.select(getLoggedInState).subscribe(res => {
if(res){
return true
}else {
this.router.navigate(['/login']);
}
});
return false;
}
}
Run Code Online (Sandbox Code Playgroud)