总是在APP_INITIALIZER

时间:2019-05-21 16:21:42

标签: angular angular6

我需要在对象中存储一些信息,以供所有组件使用,这是在应用程序中要做的第一件事,因此,我试图使用APP_INITIALIZER将对象设置为单例服务可用在组件的后面。

// app.module.ts
import { DataService } from './data.service';

providers: [DataService, { provide: APP_INITIALIZER, useFactory: initializeApp1, deps: [DataService], multi: true }],

export function initializeApp1(appInitService: DataService) {
  return (): Promise<any> => {
    return appInitService.Init();
  }
}

// data.service.ts
@Injectable({
  providedIn: 'root'
})
export class DataService { 
  public object = {
    "test1": "",
    "test2": ""
  };
  public getObj() {
    return this.object;
  }
  Init() {
    return new Promise<void>((resolve, reject) => {
     // Requet some data from server
      this.getData().subscribe((data: any) => {
        this.object = data;
        // Object set correctly
        resolve();
      });
    });
  }
}

// navbar.component.ts
import { DataService } from '../../data.service';

constructor(private dataService: DataService) { }

  ngOnInit() {
    // This always return the object with empty properties
    var x = this.dataService.getObj();
  }

我认为该服务可能创建了两次或类似的内容,但我找不到原因。

0 个答案:

没有答案