从路由解析器向服务中加载Angular 6.x数据以在功能模块中没有数据

时间:2019-02-21 14:39:41

标签: angular

我有一个Angular 6.x应用,其中我的路线是延迟加载的。我创建了一个解析器,将数据添加到包含我所有功能模块中所需数据的服务中。从功能模块中的组件访问服务时,数据不存在。如果在其中一个功能模块中创建服务,并使用相同的解析器向该服务添加数据,则该模块可使用该数据。不确定这是否是正确的方法。我不想使用ActivatedRouteSnapshot来检索我的数据。如果您知道我做错了什么,或者有更好的解决方法,我将不胜感激。

解析器

@Injectable({
  providedIn: 'root'
})
export class AppWideSettingsResolverService implements Resolve<any>{
  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    this.appSettingsService.mode = appSettings.mode;
  }
  constructor(private appSettingsService: AppSettingsService) { }
}

服务

@Injectable({
  providedIn: 'root'
})
export class AppWideSettingsService {
  mode: any;
  data: any;
  constructor() { }

  public isDev = (): boolean => {
    return this.mode === 'dev';
  }
}

路线

export const routes: Routes = [
  {
    path: '',
    component: MainLayoutComponent,
    data: {pageTitle: 'Home'},
    resolve: {
      data: AppWideSettingsResolverService
    },
    children: [
      {path: 'home', loadChildren: 'app/+home/home.module#HomeModule',
      ...

1 个答案:

答案 0 :(得分:0)

我最终没有使用服务,而是直接使用了设置文件。