触发模块延迟手动加载角度7

时间:2019-02-19 17:38:37

标签: javascript angular lazy-loading

官方文档中有很多有关如何延迟加载角度模块的信息。 [link here]

$folder ='\\networkserver\D$'  #Root Directory to place the New folders in.
$routes = get-content 'C:\uncroutes.txt'



foreach ($routes in $routes) {
    $newpath = Join-Path "$folder\" -ChildPath $routes
    New-Item $newpath -type Directory
    foreach ($newpath in $newpath) {
        New-SmbShare -Name $newpath -Path $folder -FullAccess Administrator
    }
}

这基本上使模块在用户访问 $folder ='\\networkserver\D$' #Root Directory to place the New folders in. $routes = get-content 'C:\uncroutes.txt' #list of folder Names foreach ($route in $routes) { $newpath = Join-Path "$folder\" -ChildPath $route New-Item $newpath -type Directory foreach ($ShareName in $ShareNames) { $ShareName = ($route | sls -pattern "([0-9a-zA-Z-_ ]+)$").matches.value $serverpath = "d:\$route" New-SmbShare -Name $ShareName -Path $serverpath -FullAccess Administrator } } const routes: Routes = [ { path: 'customers', loadChildren: './customers/customers.module#CustomersModule' }, { path: 'orders', loadChildren: './orders/orders.module#OrdersModule' }, { path: '', redirectTo: '', pathMatch: 'full' } ]; 路由时加载。

但是,我不知道如何从另一个模块加载模块。

在我的应用程序中,我具有以下模块:

  • auth
  • 核心
  • 事件
  • 即时消息

我的/customers(配置文件页面)中的一条路线必须使用/orders中的ngrx存储。

我的代码如下:

auth module

但是,可以预期,此代码无法使用。因为尚未加载events module如何手动加载模块?像这样的东西:

import { Observable } from 'rxjs';

import { Component, OnInit } from '@angular/core';
import { Store } from '@ngrx/store';

import { AppState } from '../../app.store';
import { IUser } from '../auth.api.service';
import { selectUser } from '../store/auth.selectors';
import { IEvent } from '../../events/events.api.service';
import { selectAllEvents, selectIsLoading } from '../../events/store/events.selectors';

@Component({
  selector: 'app-profile',
  templateUrl: './profile.component.html',
  styleUrls: ['./profile.component.scss'],
})
export class ProfileComponent implements OnInit {
  isLoading$: Observable<boolean>;
  events$: Observable<IEvent[]>;
  user$: Observable<IUser>;

  constructor(
    private store: Store<AppState>,
  ) {
    this.user$ = this.store.select(selectUser);
    this.isLoading$ = this.store.select(selectIsLoading);
    this.events$ = this.store.select(selectAllEvents);
  }

  ngOnInit() {
  }

}

2 个答案:

答案 0 :(得分:1)

Angular CLI捆绑器基于两件事将模块捆绑在一起:

1)如果您设置了用于延迟加载的模块(loadChildren),它将单独捆绑模块并延迟提供。

2)但是,如果在任何其他模块中都有对延迟加载的模块的引用(通过将其添加到其imports数组中),它会将该模块与所引用的组件捆绑在一起。

所以应该发生的是,如果您的事件模块是从某个组件引用的,则应将其与该组件捆绑在一起。

imports数组中是否为包含引用该模块的组件的模块引用了该模块?

您究竟遇到什么错误?

顺便说一句-我在本讲座的“延迟加载”部分对此进行了介绍:https://www.youtube.com/watch?v=LaIAHOSKHCQ&t=1120s

答案 1 :(得分:1)

您不必担心加载../../events。由于您具有import语句,因此该模块中将提供类/接口。如果出于某种原因要使用其他模块的功能,则可以在imports声明的@NgModule数组中添加模块名称。