zoukankan      html  css  js  c++  java
  • Angular中ViewChild gAfterViewInitPromise的使用,在父组件初始化时等待子组件的返回值

    1、子component中的异步方法

    initCreateJob = () =>
        new Promise((resolve, reject) => {
            setTimeout(() => {
              this.spiderFormService.saveUserJob(this.spiderJobInfo).subscribe((res: Res) => {
                if (res.code === 1) {
                  // val = res.data;
                  resolve(res.data)
                  // fn(this.spiderJobInfo.jobInfoId)
                }else{
                  // 提交异常
                  reject("Error code: " + JSON.stringify(res))
                }
              });
            }, 1000)
          }
        );
    

    2、加载多个子组件

    引入组件

    <app-spider-form #test1></app-spider-form>
    <app-image-check-form #test2></app-image-check-form>
    

    3、父组件的component中引用子组件component

    export class parentComponent implements OnInit,AfterViewInit{
    
    // 引用子组件
    @ViewChild('test1', {static: false}) test1;
    @ViewChild('test2', {static: false}) test2;
    
    constructor() {
      }
    
      ngOnInit() {
      }
    
    ngAfterViewInit(){
        // 子组件加载完毕触发
        this.initSpiderJob();
    }
    
    initSpiderJob(){
    
        forkJoin([
          from(this.test1.initCreateJob()).pipe(catchError(error => of(`Bad Promise: ${error}`))),
          from(this.test2.initCreateJob()).pipe(catchError(error => of(error)))
          ])
          .subscribe(results => {
            console.log("results" + JSON.stringify(results))
          });
      }
    	
    }
    

    个人博客 蜗牛

  • 相关阅读:
    jwt
    mybatis的回顾
    swagger
    MySQl总结
    Java异常
    常用Dos命令
    C++初级项目——机房预约系统
    C++中将数字型字符串转变为int类型的方法
    C++中int *a; int &a; int & *a; int * &a
    #define_CRT_SECURE_NO_WARNINGS的用法
  • 原文地址:https://www.cnblogs.com/codeobj/p/11934951.html
Copyright © 2011-2022 走看看