RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 918995
Accepted
Artemy Khodorev
Artemy Khodorev
Asked:2020-12-12 19:49:53 +0000 UTC2020-12-12 19:49:53 +0000 UTC 2020-12-12 19:49:53 +0000 UTC

Angular 4. <select> 项目仅第二次被选中

  • 772

有<select>, 有 一个<option>, 面向null, 其余<option>由*ngForfrom 数组组成。问题是这样的:如果初始值为null,那么第一次选择任何其他选项时<select>,不会先选择任何项目。如果您再次展开选项列表并选择一个,那么它只会被选中。即:1)初始值null,在<select>显示的“未选择”中-> 2)选择任何项目-<select>通常为空-> 3)再次选择任何项目-在<select>所选项目中。这是为什么?如何解决?我试图分配[select]="option.id === object.option.id"- 零效应,我试图[value]用[ngValue]- 零效应替换它。我试着写[(ngModal)]="object.option.id ? object.option.id : object.option"- 我得到一个错误,因为 起初object.option: null. 下拉列表布局的完整代码:

<select [(ngModel)]="object.option ? object.option.id : object.option">
  <option [value]="null">Не выбрано</option>
  <option *ngFor="let item of options" [value]="item.id">{{item.name}}</option>
</select>

orbject.option- 只能有一种选择。如果存在该选项,则它是一个具有 id 属性的对象object.option.id。

{
 object: {
  option: {
   id: 11111
  }
 }
}

如果该选项不存在,那么它是null.

{
 object: {
  option: null
 }
}

数组options是所有可能选项的目录。我举了一个例子:https ://stackblitz.com/edit/angular-jk1n2d?file=src%2Fapp%2Foptions%2Foptions.component.html 我 怀疑这件事是在签到[(ngModel)],我需要使用object.option.id,但如果我直接指定而不检查它,然后以防object.option: null发生错误并且应用程序崩溃。

typescript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    overthesanity
    2020-12-13T02:05:28Z2020-12-13T02:05:28Z

    您永远不需要将条件传递给指令ngModel:) 您只需要一个额外的变量来存储所选选项。让它成为selectedOption:

    options = [
      { id: '111', name: 'Option 1' },
      { id: '222', name: 'Option 2' },
      { id: '333', name: 'Option 3' },
    ];
    
    public selectedOption = null;
    

    最初null是因为没有选择任何选项。ngModel我们通过双向绑定将此属性传递给指令:

    <select [(ngModel)]="selectedOption">
      <option [value]="null">Не выбрано</option>
      <option *ngFor="let item of options" [value]="item.id">{{item.name}}</option>
    </select>
    
    <p>{{ selectedOption }}</p>
    

    为了清楚起见,我添加了一段,因此您可以确保属性更改并采用您在属性绑定中指定的值value:)

    如果您需要手动跟踪模型更改,那么我们使用单向绑定并订阅事件生成器ngModelChange:

    <select [ngModel]="selectedOption" (ngModelChange)="selectedOptionChanged($event)">
        ...
    </select>
    

    让我们在组件中创建这个方法:

    public selectedOptionChanged(id: number): void {
        console.log(id);
    }
    

    但是注意在单向绑定的情况下,属性本身的值是selectedOption不会改变的,所以要靠id.

    • 0

相关问题

  • 打字稿。设置 tsconfig.json 文件

  • 为什么会出现编译错误?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5