【发布时间】:2019-08-02 02:23:25
【问题描述】:
我拥有并编辑表单,并且正在使用解析器来预取数据以填写表单。当最终用户单击浏览器刷新按钮时,我想重新使用解析器。目前,数据不会被重新调用。我相信这是因为数据是在 ngOnInit 中调用的。
我在我的路由模块中实现了 runGuardsAndResolvers: 'always' 和 onSameUrlNavigation: 'reload'。这不起作用。
我尝试从构造函数调用 this.ngOnInit。我尝试将表单初始化代码放在它自己的私有函数中,并从 ngOnInit 和构造函数中调用它。这似乎可行,但似乎我必须将所有当前的 ngOnInit 代码放在私有方法中。我不确定这是否是最好的方法。
// Route code
{
path: ':id/details/:detailsId/edit', component: TimecardDetailsEditComponent,
resolve: {
resolvedTimecard: TimecardSingleResolver,
resolvedTimecardDetailsSingle: TimecardDetailsSingleResolver
},
runGuardsAndResolvers: 'always'
}
// import
RouterModule.forRoot( appRoutes, { preloadingStrategy: PreloadAllModules, enableTracing: false, onSameUrlNavigation: 'reload' } )
// within ngOnInit
this._route.data.subscribe( data => {
const resolvedTimecardData: ITimecard = data[ 'resolvedTimecard' ];
const resolvedTimecardDetailsData: ITimecardDetails = data[ 'resolvedTimecardDetailsSingle' ];
// Methods set properties with data retrieved
this.onTimecardRetrieved( resolvedTimecardData );
this.onTimecardDetailsRetrieved( resolvedTimecardDetailsData );
} );
// Within the ngOnInit I crete the reactive form and I have a method where I can patch the values returned from the resolved data...It is this patched method I am thinking also needs to be pulled out of ngOnInit
I simply want the resolvers to run when the end user clicks the browser refresh button.
【问题讨论】:
标签: angular angular-reactive-forms resolver