为什么路由器没有在angular 2中正确更新html模板中的数据?

为什么路由器没有在angular 2中正确更新html模板中的数据?,angular,angular2-routing,observable,angular2-template,angular2-services,Angular,Angular2 Routing,Observable,Angular2 Template,Angular2 Services,我有以下解析器: @Injectable() export class DashboardDataResolver implements Resolve<division> { constructor( private service: dashboardService, private router: Router ) {} resolve( route: ActivatedRouteSnapshot, state: RouterStateSnapshot ):

我有以下解析器:

@Injectable()
export class DashboardDataResolver implements Resolve<division> {
    constructor( private service: dashboardService, private router: Router ) {}

    resolve( route: ActivatedRouteSnapshot, state: RouterStateSnapshot ): Observable<division> | Promise<division> | any {
        console.log(route.params);
        let id           = route.params[ 'id' ];
        let divisionType = route.params[ 'divisionType' ];
        return this.service.getDivisionData(id, divisionType).then(data => {
            if ( data ) return data;
            else {
                this.router.navigate([ '/dashboard' ]).then(() => 'success');
                return null;
            }
        });
    }
}
我面临的问题是,在DashboardDataComponent的html中,我通过单击google maps获取的地区名称第一次显示出来,并且在我玩地图时不再更新(如果我单击多边形,它应该会更新到该地区),奇怪的是,当我在组件B中记录值时,它显示所获取的正确数据。进行html更新的唯一方法是在路由之间切换并返回组件B

我使用以下语法在dashboardMapComponent中导航:

private navigateToDivision( divisionId: string, divisionType: string ): void {
        if ( divisionId ) {
            this.selectedId = divisionId;
            this.router.navigate([ divisionId, { divisionType: divisionType } ], { relativeTo: this.route }).then(() => 'successfully loaded selects');
        }
    }
我怎样才能解决这个问题

请注意地图下方的html:

点击后应更新至迪拜土地(迪拜应替换为迪拜土地)(上图)。问题是,它只在切换到其他路线并返回仪表板后才会更新。

此外,这是我的路由器:

const dashboardCenterRoutes: Routes = [ {
    path: '',
    component: DashboardCenterComponent,
    children: [ {
        path: '',
        component: DashboardMap,
        children: [
            {
                path: ':id',
                component: DashboardDataComponent, resolve: { data: DashboardDataResolver }
            }
        ]
    } ]
} ];

我记得在某个地方看到了与地图相同的问题,由于某种原因,变化检测没有发生。我现在在任何地方都找不到这个问题

但您可以尝试使用

import { Component, OnInit, NgZone } from '@angular/core';

constructor(private ngZone: NgZone) {}
并将不更新视图的代码包装到:

this.ngZone.run(() => { ...your code here ...})

非常感谢。这是推荐信:不客气,乐意帮忙!:)是的,这就是我的意思:)
import { Component, OnInit, NgZone } from '@angular/core';

constructor(private ngZone: NgZone) {}
this.ngZone.run(() => { ...your code here ...})