У меня есть следующий распознаватель:Почему маршрутизатор не обновляет данные правильно в html-шаблоне в угловом 2?
@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;
}
});
}
}
Компонент DashboardMapComponent, который содержит две подписки, один, чтобы загрузить пару GeoJSON файлов и другой кучу других JSon файлов, которые необходимы для применения:
ngOnInit(): void {
this.selectsSubscription = this.dashboardService.loadAllSelects().subscribe(() => this.selectsDataInit());
this.mapSubscription = this.service.loadGeoJson().subscribe(() => this.geoJsonInit().then(() => this.onMapsReady()).catch((error: Error) => console.log('map not properly loaded')));
}
private selectsDataInit() {
this.selects = this.route.params.switchMap((params: Params) => {
this.selectedId = params[ 'id' ];
return dashboardService.getAllSelects();
})
}
ngOnDestroy(): void {
this.selectsSubscription.unsubscribe();
this.mapSubscription.unsubscribe();
}
private geoJsonInit(): Promise<any> {
return dashboardMapService.getAllGeoJsonData().then((geoData: Array<Object>) => this.geoJsonData.push(...geoData))
.then(() => this.navigateToDivision('dubai', 'city'))
.catch((error: Error) => console.log('failed to push geoJsonData'));
}
Обратите внимание, что onMapsReady рисует карты Google.
И DashboardDataComponent, который содержит следующее:
this.subscription = this.route.data.subscribe((d: { data: division }) => {
console.log(d.data);
this.selectedDistrict = d.data
});
Проблемы я столкнулся в том, что в HTML из DashboardDataComponent, название района я кокетливый, нажав на картах Google, что отображается первым время и больше не обновляется, когда я играю с картой (она должна обновляться до района, если я нажимаю на многоугольник), странно, что когда я регистрирую значения в компоненте B, он отображает правильные данные. Единственный способ сделать обновление HTML, чтобы переключаться между маршрутами и получить обратно к компоненту В.
Я перемещаться в 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 }
}
]
} ]
} ];
СПАСИБО! вот ссылка: http://stackoverflow.com/questions/31352397/how-to-update-view-after-change-in-angular2-after-google-event-listener-fired – abedzantout
Добро пожаловать, рад помочь! :) Да, это был бы вопрос, который я имел в виду :) – Alex