Angular8路由:强制所有子代运行其构造函数ngOnInit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular8路由:强制所有子代运行其构造函数ngOnInit相关的知识,希望对你有一定的参考价值。

我有以下路由:

const routes: Routes = [
  
    path: '', children: [
      path: '', pathMatch: 'prefix', redirectTo: 'timing',
      path: 'timing', component: TimingComponent,
      path: 'fio', component: FioComponent,
      path: 'rsp', component: RspComponent, 
    ]
  
];

我有一个全局服务,该服务打开一个文件,并且必须向所有子项显示此文件中的数据。但是在这一点上,只有“定时”是活的。 'fio','rsp'未定义。

是否有可能使'fio','rsp'也运行?在全球服务中,我尝试过:

this.router.navigate(['/timing']).then(()=>
        this.timing.UpdateView (val.Root.Timing);
        this.router.navigate (['fio']).then (()=> 
          this.fio.UpdateView (val.Root.Fio);
        )

但是这不起作用。

谢谢你,兹维卡

答案

这是将some.service.ts文件下载的数据注入多个组件的方式。

app.module.ts

@NgModule(
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [MyService], // provide service
  bootstrap: [AppComponent]
)
export class AppModule  

服务只是在内部创建变量以在其中保存数据的示例。

my.service.ts

@Injectable()
export class MyService 

    data: Observable<any>

    getData() 
        this.data = this.http.get() // http call to get data or other way to get data.
    

app.component.ts

export class AppComponent 

  constructor(private myServ: MyService) 

  ngOnInit() 
    this.myServ.getData() // Calling function to load data
  

子组件示例:

export class FioComponent 

  data$: Observable<any>

  constructor(private myServ: MyService)  // when injecting service there have to be private, public or protected statement.

  ngOnInit() 
    this.data$ = this.myServ.data
  

以上是关于Angular8路由:强制所有子代运行其构造函数ngOnInit的主要内容,如果未能解决你的问题,请参考以下文章

如何强制编译器显示隐式构造函数

在 Angular 8 中,如何将一个组件传递给另一个组件的输入,然后在路由器模块中强制使用它

582. Kill Process杀死所有子代

n维数组构造函数的模板规范

OSX 内置强制退出应用程序如何获取其应用程序列表?

如何强制调用类的全局实例的析构函数和构造函数(因此“重新初始化”类实例)