如何使用 Angular ng-select 动态显示 ID?

How do I display an ID dynamically using Angular ng-select?

提问人:fearless924 提问时间:11/11/2023 最后编辑:fearless924 更新时间:11/14/2023 访问量:59

问:

我正在使用 ng-select 显示 API 中的项目。

   <ng-select placeholder="Select Template" #templates (change)="onChange()">
      <ng-container *ngFor ="let t of templateData.envelopeTemplates">
        <ng-container *ngIf="t.name && t.templateId">
          <ng-option value="{{t.templateId}}">{{t.name}}</ng-option>
        </ng-container>
      </ng-container>
   </ng-select>

在我的代码中,您可以看到我从请求中提取名称,但我还需要在值中显示 id。当我运行它时,我收到此错误,main.js:36218错误类型错误:无法读取未定义的属性(读取“值”)

我需要将 templateID 绑定到值,因为当用户选择一个选项时,该 id 用于向 API 发送请求以获取有关该模板的更多数据。其他一切都很好,我只是被困在这个问题上。这也是一种反应形式。这是方法。

 getTemplates(){
this.templateFieldService.getTemplate().subscribe((temp: Template) => {
  if(temp){
    this.templateData = temp;
    this.templateData.envelopeTemplates.forEach(temp =>{
      this.tempData?.push(temp.name);
      this.tempId?.push(temp.templateId);
    })
  }
  console.log(this.templateData)
});

更新:

我创建了一个 StackBlitz 来显示我在说什么。堆栈闪电战

角度 形式 angular-ngselect

评论


答:

0赞 Faizanur Rahman 11/11/2023 #1

您可以使用安全导航运算符 (?) 来处理 templateData。

<ng-container *ngFor="let t of this.templateData?.envelopeTemplates"> </ng-container>

如果不起作用,请尝试使用 json 管道在模板中记录数据

<div> {{ this.templateData?.envelopeTemplates | json }} </div>

如果数据不可用,请确保在 ngOnInit() 方法中获取数据

评论

0赞 fearless924 11/14/2023
ID 显示,我只需要它在我的选择选项中显示为值。我在原来的帖子中添加了一个 stackblitz url。
0赞 IAmSupreme 11/11/2023 #2

该错误是由于尝试从对象访问属性“value”而产生的,从上面的代码中,我们无法确定它是什么对象,也无法知道是什么操作提示了该错误。

评论

0赞 fearless924 11/14/2023
嗨@IamSupreme我创建了一个 stackblitz URL,让您更好地理解我的意思。谢谢。