我正在为我的 Angular 项目使用 angular2-query-builder,我在控制台中收到以下错误。下面添加了所有代码,并且我还附上了控制台错误截图以供参考。QueryBuilder 版本:“angular2-query-builder”:“^0.6.2” Typescript 版本:“typescript”:“~4.3.2” Angular 版本:12.1.0
我将以下链接作为参考:
https://github.com/zebzhao/Angular-QueryBuilder/blob/master/demo/src/app/app.component.ts
如果我将静态值放入配置,那么它的工作正常,但是当我尝试动态实现时,就会发生这个问题,需要单击 addRule 按钮时的屏幕截图“Success_QB”图像中的结果。但这现在没有发生。在此处输入图像描述 在此处 输入图像描述
控制台错误详细信息:
错误类型错误:无法在 wrapListenerIn_markDirtyAndPreventDefault 的 executeListenerWithErrorHandling (core.js:15285) 的 FileAssignmentComponent_ng_container_11_Template_button_click_1_listener (file-assignment.component.html:18) 处读取 QueryBuilderComponent.addRule (query-builder.component.js:894) 处未定义的属性“值” (core.js:15323) 在 HTMLButtonElement。(platform-browser.js:560) 在 ZoneDelegate.invokeTask (zone.js:406) 在 Object.onInvokeTask (core.js:28664) 在 ZoneDelegate.invokeTask (zone.js:405) 在 Zone.runTask (zone.js :178) 在 ZoneTask.invokeTask [作为调用] (zone.js:487)
我的代码:
从 'angular2-query-builder' 导入 { QueryBuilderComponent, QueryBuilderConfig, Rule }; 导出类 FileAssignmentComponent 实现 OnInit { @ViewChild(QueryBuilderComponent, { static: false }) queryBuilder: QueryBuilderComponent;
公共 currentConfig:QueryBuilderConfig;
公共配置:QueryBuilderConfig = { 字段:{} };
公共查询= {条件:'和',规则:[],};
构造函数() { this.queryCtrl = this.formBuilder.control(this.query);
// 使用 web api 从 DB 动态加载 QB 字段数据 this.fileassignmentService.getQueryFilterReviewElement(this.commonSvc.reviewer_name) .subscribe( (res) => { this.QryFiltReviewEle = res; this.QryFiltReviewEle.map((v) => { this.config.fields[v.key] = { name: v.value, type: 'category', operator: v.datatype === 1 ? strOperators : numDateOperators, options: this.dataEleOptions } }); }, (error) => { this.Snakebar.openSnackBarError('意外错误!请联系管理员。'); } ) }
ngOnInit(): 无效 {
this.currentConfig = this.config;
}
}
让实体的实体" [value]="entity.value"> {{entity.name}} <ng-container *queryField="let rule; 让字段=字段;让 onChange=onChange; 让 getFields = getFields"> <mat-select [(ngModel)]="rule.field" (ngModelChange)="onChange($event, rule)" (selectionChange)="onSelectQBElement($event)"> <mat-option *ngFor="let field of getFields(rule.entity)" [value]="field.value"> {{ field.name }} <ng-container *queryOperator="let rule; 让运营商=运营商;让 onChange=onChange"> <mat-form-field [style.width.px]="90"> <mat-select [(ngModel)]="rule.operator" (ngModelChange)="onChange(rule)"> <mat-option *ngFor="let value of operator" [value]="value">
如果有人对此提供帮助,将不胜感激。