当前位置: 首页 > 知识库问答 >
问题:

如何使用接口确保Angular 2中组件输入的正确格式?

罗金林
2023-03-14

我有一个接口(option.ts):

export interface Option {
  label: string;
  model: any;
}

然后导入到我的组件(form-select.component.ts):

import {Component, Input, Output, EventEmitter} from 'angular2/core';
import {Option} from './option';

@Component({
  selector: 'form-select',
  templateUrl: './app/assets/scripts/modules/form-controls/form-select/form-select.component.html',
  styleUrls: ['./app/assets/scripts/modules/form-controls/form-select/form-select.component.css'],
  inputs: [
    'options',
    'callback',
    'model',
    'label'
  ]
})

export class FormSelectComponent {
  @Input() model: any;
  @Output() modelChange: EventEmitter = new EventEmitter();

  isOpen: boolean = false;

  toggle() {
    this.isOpen = !this.isOpen;
  }

  close() {
    this.isOpen = false;
  }

  select(option, callback) {
    this.model = option.model;
    this.modelChange.next(this.model);

    callback ? callback() : false;
  }
}

现在我想使用这个接口来确保从另一个组件传递到我的select组件的[options]格式正确,类型正确<代码>[选项]必须是如下所示的数组:

options = [
  {label: 'Hello world', model: 1},
  {label: 'Hello universe', model: 2},
  {label: 'Hello honey boo boo', model: 3}
]

其中每个索引对象将使用Option接口,但如何做到这一点?我记得在组件类中使用了Option[],但我不确定如何将[选项]与接口一起使用,然后将其传递给视图(或者您应该如何操作)。

我怎样才能做到这一点?

共有1个答案

郝君博
2023-03-14

您可以执行@Input()选项:选项[]。但是它在运行时不会有任何影响,因为javascript中没有运行时检查接口。
检查这个问题和这个问题,还有许多其他问题。

因此,如果您只是这样输入:

<form-select [options]="options"></form-select>

您无法确保输入选项正在实现选项接口,因为该值实际上是在运行时传递的。

但是,如果您像这样为选项赋值

this.options = someOptions;

然后,IDE将显示一个错误,说明someOptions不是Option[]类型。但这只是在编译/开发时。

那么,用接口键入变量没有意义吗?

实际上我认为这是一个很好的练习。至少,您可以使代码更具可读性。但是,只要确保将正确的界面输入到选项中,就没有必要使用界面。

 类似资料:
  • 我有一些代码,其中多个方法使用键盘,并在主方法中连续调用。我正在做的练习特别要求使用4种不同的方法,所以我不能把它们放在一起。最初,我用键盘。在每个方法的末尾关闭(),但当第二个方法运行时,无论调用顺序如何,这都会导致NoTouchElementException。通过卸下键盘。close(),代码现在可以工作了,但是我现在收到了资源泄漏的警告,因为键盘没有关闭。有人能告诉我一种关闭输入而不出错的

  • 嘿,我必须使用 JOptionPane 向用户询问购买金额,如果他们输入超过小数点后两位、任何内容、字符或多于小数点,程序必须显示错误消息并停止。 我该怎么做? 我不希望有人为我编写程序,只是一个解释我将如何做的链接 如果用户输入“12.526”或“”或“1.3.25”或“abc”,我希望程序显示错误消息并停止。 由于这似乎是一个令人困惑的问题,或者我问错了,这些是我的老师的指示: 程序必须要求用

  • 问题内容: 我有一个简单的表格。所有组件和状态都保存在Page组件中。有2个显示标题和3个输入字段。第一个输入应该是文本,第二个和第三个输入应该是整数。当用户输入错误的数据类型时,我想在输入字段旁边弹出一条错误消息。我的问题与React.JS的最佳做法有关 谁认为该值有效?我想输入字段的唯一工作就是将值引导回到保持状态的组件,这是否意味着只有Page可以确定值是否有效? 然后应该如何显示弹出窗口?

  • 问题内容: 我正在Ruby中创建哈希,并希望以正确的格式将其写入JSON文件。 这是我的代码: 这是结果文件的内容: 我正在使用Sinatra(不知道哪个版本)和Ruby v 1.8.7。 如何以正确的JSON格式将其写入文件? 问题答案: 需要JSON库,并使用。 您的temp.json文件现在看起来像:

  • 我正在使用React和React路由器尝试将我的组件链接到一个项目中。我想从主页(当前组件)链接一张图片到另一个组件。 目前我可以点击图片,它有点像一个链接(有时点击后变成蓝色),尽管它没有链接到其他组件,没有错误显示,网址栏中没有任何变化。什么都没发生。 有什么想法吗?这是我的代码: 代码错误:react dom。发展js:17117上述错误发生在组件中:img(由Home创建)中div(由Ho

  • 我是C#的新手,我有一些Java方面的基础知识,但我不能让这段代码正常运行。 它只是一个基本的计算器,但当我运行程序时,VS2008给了我这个错误: 我做了几乎相同的程序,但在Java使用的是JSwing,它运行得非常好。 下面是C#的形式: 会有什么问题?有没有办法解决? PS:我也试过 但没有奏效。