gpt4 book ai didi

angular - 绑定(bind)具有特定类型的 Angular 组件

转载 作者:搜寻专家 更新时间:2023-10-30 21:23:41 25 4
gpt4 key购买 nike

我目前正在使用 Angular 和 TypeScript,我想知道是否可以绑定(bind)组件 @Input 以使用特定类型?

示例

@Component({selector: 'foobar'})
export class FooComponent {
@Input() foo: number;
@Input() bar: boolean;
}

<foobar foo="123" bar="true"></foobar>

组件绑定(bind)时,foobar都是string。 Angular 是否提供了强制指定类型的方法?

我试过这个,但是我不喜欢它...(看起来很脏,不太优雅)

@Component({selector: 'foobar'})
export class FooComponent {
foo: number;
bar: boolean;

@Input('foo') set _foo(value: string) {
this.foo = Number(value);
}

@Input('bar') set _bar(value: string) {
this.bar = value === 'true';
}
}

如果 Angular 的 Input 中有一些东西可以充当绑定(bind)委托(delegate),那就太好了;例如:

@Input('foo', (value: string) => Number(value)) foo: number = 123;

最佳答案

当你写的时候

foo="123"

你使用 one-time string initialization 。 Angular 将值设置为 foo属性作为字符串并忘记它。

如果你想使用字符串以外的东西,那么使用括号

[foo]="123"

编写绑定(bind)时,请注意模板语句的执行上下文。模板语句中的标识符属于特定的上下文对象,通常是控制模板的 Angular 组件。

当您使用属性绑定(bind)时,值将按原样传递

[foo]="isValid"

...
@Component({...})
class MyComponent {
isValid: boolean = true;

如果你想要枚举那么你应该这样写

[foo]="MyEnum"

...

enum MyEnum {
one,
two,
three
}

@Component({...})
class MyComponent {
MyEnum = MyEnum;
}

其他例子

[foo]="445" => number
[foo]="'445'" => string
[foo]="x" => typeof x or undefined

关于angular - 绑定(bind)具有特定类型的 Angular 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44388309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com