Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨组件强制执行参数值限制_Javascript_Angular_Enums_Interface - Fatal编程技术网

Javascript 跨组件强制执行参数值限制

Javascript 跨组件强制执行参数值限制,javascript,angular,enums,interface,Javascript,Angular,Enums,Interface,我有多个组件,其参数要限制为特定值。例如(在伪代码中): 在这两个组件中,@Input()myParameter应只接受相同的限制值。我不想复制每个组件中允许的值,而是想抽象限制。我该怎么做?我假设它需要枚举或接口,但我不知道如何实现这两种方法。您可以使用类型。在某个地方定义它,可能是一个单独的文件,然后导出它。这与其说是有角度的东西,不如说是打字稿 export type MyType = 'foo' | 'bar' | 'baz' 然后将其导入到要使用它的文件中 import {MyTyp

我有多个组件,其参数要限制为特定值。例如(在伪代码中):


在这两个组件中,
@Input()myParameter
应只接受相同的限制值。我不想复制每个组件中允许的值,而是想抽象限制。我该怎么做?我假设它需要
枚举
接口
,但我不知道如何实现这两种方法。

您可以使用类型。在某个地方定义它,可能是一个单独的文件,然后导出它。这与其说是有角度的东西,不如说是打字稿

export type MyType = 'foo' | 'bar' | 'baz'
然后将其导入到要使用它的文件中

import {MyType} from './path/to/file'
并使用新创建的类型:

@Input() myParameter: MyType

我的路径?这是从哪里来的?:)我猜是打字错误:)我的类型应该在那里是的,修正了。锐利的眼睛!我尝试了您的方法,但当我尝试
[myParameter]=“'aksjdaksjdh'”
时,组件仍然接受该值。我做错了什么?它可能在开发模式下工作,因为它使用JIT编译,而JIT编译不进行类型检查。如果您使用的是Angular CLI,请尝试运行
ngbuild--prod
,它应该会失败,因为它使用AOT。顺便说一下,像我这样使用
类型
在类型检查方面与原始代码没有什么不同。对于您的代码,它仍然可以在JIT中工作,并且应该在AOT中失败。
@Input() myParameter: MyType