相关疑难解决方法(0)

为什么ngOnInit打了两次电话?

我试图创建新的组件,但它的ngOnInit()方法被调用两次,我不知道为什么会发生这种情况?这里我创建了一个名为ResultComponent的组件,它从名为mcq-component的父组件中获取@Input. 这是代码:

父组件(MCQComponent)

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

@Component({
    selector: 'mcq-component',
    template: `
        <div *ngIf = 'isQuestionView'>
            .....
        </div>
        <result-comp *ngIf = '!isQuestionView' [answers] = 'ansArray'><result-comp>
    `,
    styles: [
        `
            ....
        `
    ],
    providers: [AppService],
    directives: [SelectableDirective, ResultComponent]
})
export class MCQComponent implements OnInit{
      private ansArray:Array<any> = [];
    ....
    constructor(private appService: AppService){}
    ....
}
Run Code Online (Sandbox Code Playgroud)

子组件(result-comp)

import { Component, OnInit, Input } from '@angular/core';

@Component({
    selector:'result-comp',
    template: `
        <h2>Result page:</h2>

    ` …
Run Code Online (Sandbox Code Playgroud)

ngoninit angular

47
推荐指数
9
解决办法
4万
查看次数

组件构造函数被 Angular 元素调用两次

我正在开发一个递归查询构建器形式,它与 Angular 7中的反应形式类似。表示用户可以通过点击 继续添加并行规则Add rule,也可以通过点击 添加分组Add group。我创建了两个组件,QueryDesignerComponent并且QueryComponent. QueryDesignerComponent保存外部容器,带有ANDOR条件,并QueryComponent保存行输入,即LHS,operatorRHS

  1. 当用户单击时,我只需通过insideAdd rule再推送一个条目即可增长规则。我用 重复这一点。QueryComponentQueryDesignerComponent*ngFor
  2. 当用户单击时,Add group我正在调用QueryDesignerComponentinside QueryComponent,这使得它递归。我用 重复这一点*ngFor

我已经完成了实现,并且它在有角度环境的角度应用程序中运行良好。

现在,我正在尝试将此流程移植到Angular elements中,以使其可重用,无论环境如何。

这就是我将第一行 [ QueryComponent] 放在里面的方式QueryDesignerComponent

<div class="qd--criteria">
    <div class="row qd--body qd--clear-margin-lr">
        <div class="col-md-12 qd--condition-container">
            <query [data]="data" [operators]="operators" [(queryForm)]="queryForm"></query>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这样我就可以管理内部的并行查询和组 …

javascript angular angular-elements

0
推荐指数
1
解决办法
6528
查看次数

标签 统计

angular ×2

angular-elements ×1

javascript ×1

ngoninit ×1