有时候,你可能需要在应用程序初始化的时候加载些简单的数据或做简单的验证。大部分的什做法是在 main component 组件中做这个事情,但这很得难保证在其他的组件中有效使用,有没有更新的办法做这个事情 呢,请继续往下看。
在官方文档是这样描述的:APP_INITIALIZER 是一个函数,在应用程序初始化时被调用。这就意味着可以通过 AppModule 类的 providers 以 factory 的形式配置它来使用,同时应用程序将会等待它加载完成后进行下一步,所以在这此只适合加载简单的数据。
ng new example --skip-install npm install # yarn install
首先创建一个 provider ,它会在请求解析完成后返回一个 Promise 对象
@Injectable()
export class JokesProvider {
    private joke:JokeModel = null;
  
      constructor(private http:Http){
        
    }
  
      public getJoke(): JokeModel {
        return this.joke;
    }
  
      load() {
        return new Promise((resolve,reject) => {
            this.http.get(url)
                      .map(r=>r.json())
                      .subscribe(r=> {
                     this.joke = r['value'];
              resolve(true);
            })
        })
    }
}这里会经过三个过程:
getJoke() 方法在其他组件或模块调用时直接返回 joke 当前保存的数据
私有属性 joke 会保存当前请求的数据
load() 函数会在应用程序初始时立即调用
export function jokesProviderFactory(provider: JokesProvider){
    return () => provider.load();
}@NgModule({
    declarations:[
        AppComponent
    ],
      imports:[
        BrowserModule,// required
          HttpModule// required
    ],
      providers: [
        JokesProvider,
          {
            provide:APP_INITIALIZER,useFactory: jokesProviderFactory,
              deps:[JoesProvider], multi:true
        }
    ],
      bootstrap:[AppComponent]
})
export class AppModule { }<p>@Component({<br/>    selector:'app',<br/>    template:`<h1>Joke of the day: </h1><p>{{jokeModel.joke}} </p>`<br/>})<br/>export class AppComponent implements OnInit{<br/>  title = 'app';<br/>  jokeModel : JokeModel;<br/>  <br/>  constructor(jokesProvider: JokesProvider){<br/>      this.jokeModel = jokesProvider.getJoke();<br/>  }<br/>  <br/>  ngOnInit(){<br/>      console.log('AppComponent: OnInit()');<br/>  }<br/>}  <br/></p>
以上就是理解Angular 中 APP_INITIALIZER 的作用的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号