在 Angular 中,@Input() 不适用于最简单的硬编码字符串输入

弗拉基米尔·德波托维奇

我有 admin.users.list.html 作为父模板,它向子组件输入一些数据:

<general-entities-list-container *ngIf="{
    entityType: entityType$ | async
} as asyncData"
  [entityType]='asyncData.entityType'
  [entityTypeHardCoded]="'users'"
  [entityTypeSet]="'users'"
  >
</general-entities-list-container>

我有 general-entity-list-container.html (子模板):

entityType is:{{ entityType }} <br/>
entityTypeSet is:{{ entityTypeSet }} <br/>
entityTypeSet_ is:{{ entityTypeSet_ }} <br/>
entityTypeHardCoded is:{{ entityTypeHardCoded }} <br/>

admin.users.list.ts:

entityType$: Observable<string> = of('users');

general-entity-list-container.ts 有:

@Input() entityType: string;
@Input() entityTypeHardCoded: string;

entityTypeSet_: string;
    
@Input() set entityTypeSet(cet: string) {
  this.entityTypeSet_ = cet;
  //this.handleChangeCurrentEntityType(cet);
}
get entityTypeSet(){
  return this.entityTypeSet_;
}

我无法在子组件模板中的任何地方输出。这里有什么问题。changeDetection: ChangeDetectionStrategy.OnPush,在父组件和子组件上都使用。

乔瓦尼·奇奥迪

首先,您的 *ngIf 将始终返回 true (它检查是否定义了 asyncData 对象,但您实际上是在定义它,所以这将是 true)。如果您尝试将异步管道订阅组合在一起,那么最好在顶部包装器元素中使用该 *ngIf ,然后在您的子元素中使用

*ngIf="asyncData.entityType"

就像是:

<div *ngIf="{
  entityType: entityType$ | async
} as asyncData"
    <child-component 
        *ngIf="asyncData.entityType" 
        [entityType]="asyncData.entityType">
    </child-component>
</div>

然后我看到一个单引号,应该是双引号:

[entityType]='asyncData.entityType'

应该:

[entityType]="asyncData.entityType"

除此之外,它还适用于 stackblitz。所以肯定有其他问题。将组件导入到模块中,将模块导入到模块中,在组件中引用错误的模板等。但似乎 Angular 输入仍然有效:)

我建议您先尝试使用 stackblitz,然后检查您的组件/模块设置中可能还有什么问题。问题就在那里,而不是在输入中。

https://stackblitz.com/edit/angular-ivy-zgqtey?file=src%2Fapp%2Fapp.component.html[][1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

substringWithRange适用于硬编码字符串,但不适用于用户输入的字符串

Javascript适用于硬编码字符串,但不适用于变量

“字符串中的段数”不适用于特定输入

C中的HashTable不适用于字符串

不要混淆Proguard中的硬编码字符串

为什么JavaScript中的`btoa`编码适用于20位数字的字符串而不适用于20位数字的int?

bs-custom-file-input不适用于Angular

Angular @Input不适用于引导程序组件

Angular 指令 ng-model 适用于数组但不适用于字符串

Angular Binding 不适用于 HTML 中的选择框

触摸事件不适用于Angular中的Google Maps

样式不适用于Angular 2 Typescript中的innerhtml

样式不适用于Angular中的innerHTML

Angular的绑定不适用于指令中添加的元素

分页符不适用于 Angular 13 中的 ngFor

嵌套组件不适用于 Angular 中的路由

python 字符串中的多个字符替换不适用于管道

自动 jquery 重新提交适用于表单中的硬编码值,但不适用于 PHP 变量

类型提示不适用于php 7中的函数中的字符串

直到循环不适用于shell中的字符串比较

json中的字符串替换不适用于复杂对象

-1乘以sorted()不适用于python中的字符串数据

查找最长的子字符串不适用于C ++中的特定测试用例

C realpath函数不适用于源文件中定义的字符串

Matlab中的字符串转换不适用于int值

模式匹配不适用于JAVA中的字符串

Order by子句不适用于Play Ebean中的字符串

拆分字符串不适用于 Oracle 中的以下查询

$addToSet 与 MongoDB 中的条件不适用于字符串