- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们已经构建了一个通用的主从组件,它将根据提供的 @Input EntityType 属性呈现特定的细节组件。在主细节组件模板中,我们调用一个包装器/工厂组件,它将根据实体类型呈现适当的细节组件:
@Component({
selector: 'master-detail',
template: `
<div>
<grid></grid>
<detail-wrapper> [entityType]=entityType></detail-wrapper>
</div>
`,
})
export class MasterDetailComponent {
@Input() entityType: string ;
...
}
@Component({
selector: 'detail-wrapper',
template: `
<ng-container [ngSwitch]="entityType">
<comp-a *ngSwitchCase="'A'"></comp-a>
<comp-b *ngSwitchCase="'B'""></comp-b>
<comp-default *ngSwitchDefault></comp-default>
</ng-container>
`,
})
export class DetailWrapperComponent {
@Input() entityType: string ;
...
}
细节组件本身可以包含另一个主从组件(如俄罗斯套娃)。但是,当发生这种情况时,我的代码将因为循环依赖而无法运行:
master-detail -> detail-wrapper -> compA -> master-detail
我知道我可以通过使用继承为每个级别创建重复项来打破循环依赖:
export class MasterDetailLevel2Component extends MasterDetailComponent {...}
export class CompALevel2Component extends CompAComponent {...}
但这看起来确实不是一个合适的解决方案,并且涉及为每个递归级别创建类。
我看到的另一种可能性是使用 ComponentFactoryResolver 而不是 DetailWrapperComponent。然后将为 MasterDetailComponent 提供组件工厂接口(interface)(因此删除具体实现之间的链接)。但是使用这个解决方案,我正在失去模板绑定(bind)。
有没有更好的方法来解决这个问题?
最佳答案
我发现的最佳解决方案是在我的主从组件中使用@ContentChild,并让它注入(inject)来自父组件的详细信息模板。这样我就摆脱了循环依赖,也让我的组件更加灵活。这是一篇关于此的非常好的文章:
https://blog.jonrshar.pe/2017/May/29/angular-ng-template-outlet.html
关于具有 "russian dolls"组件的 Angular 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453793/
我正在构建一个应用程序,该应用程序从包含俄语数据的客户端 JSON 获取,但是当我尝试打印它、使用数据或将其返回到客户端时,我得到一堆“?????” 这是客户端: function
我们已经构建了一个通用的主从组件,它将根据提供的 @Input EntityType 属性呈现特定的细节组件。在主细节组件模板中,我们调用一个包装器/工厂组件,它将根据实体类型呈现适当的细节组件: @
我有一个可编辑的 uitextview,用户可以在其中输入俄语或英语。然后,我将此文本另存为文件目录中的 .txt 文件,稍后再阅读。 这里是保存文本的部分 -(IBAction)saveText:(
我尝试将 TfidfVectorizer 与俄语停用词一起应用 Tfidf = sklearn.feature_extraction.text.TfidfVectorizer(stop_words='
我的 Selenium 化物测试因 WebDriverException 失败:未知错误:当它尝试发送并附加西里尔文名称“золотыещенки.png”的文件时,无法解压缩"file" Selen
我在我的第一个 ZF 项目中,遇到了带有俄文字符的砖墙。(参见 my original post on StackOverflow here)我切换到简单的旧过程 PHP 来解决它,现在我可以使用一些
我是一名优秀的程序员,十分优秀!