gpt4 book ai didi

javascript - Angular:显示两个类组件之间的差异

转载 作者:行者123 更新时间:2023-12-02 22:19:56 24 4
gpt4 key购买 nike

我有一个父组件。它将数据注入(inject)到两个 @Input() 子重复卡组件中,显示 html。另外,父类中存在差异类,标记两个类之间的差异。

当在下面的html中显示类成员时,是否有方法可以突出显示已更改的项目,而不修改子组件?最好不要在子卡组件中注入(inject)差异逻辑。宁愿让父 Controller 突出显示差异,而不会将整体逻辑泄漏到子组件中。

所有子组件都有相同的 css 类引用成员名称,.city 引用城市,.zipcode 涉及项目邮政编码,

可能需要创建 javascript 函数,然后在 ngOnit 中应用 Angular,仍在研究,尝试应用这个答案? Generate dynamic css based on variables angular

enter image description here

export class PropertyLocation {   
streetName: string;
streetType: string;
postdirectional?: string;
unitNumber?: string;
unitType?: string;
city: string;
state?: string;
zipcode: number;

effectiveStartDate: Date;
addressChangeReason?: AddressChangeReasonDto;
addressSource?: SourceOfAddressDto;
}

差异类:可以随意重组父类中的类,以便在需要时使解决方案更容易

export class DifferenceClass {   
ClassMember: string;
DifferentFlag: boolean;
}

源自

function isSame(obj1:any, obj2:any): DifferenceClass {
let difference: DifferenceClass[];
for (const key in obj1) {
if (obj1[key] !== obj2[key]) {
differences.push(new DifferenceClass(key,true));
}
else
differences.push(new DifferenceClass(key,false));
}
return differences;
}

最佳答案

自定义指令有助于将一些 UI 逻辑与 Component 类分离。

示例:

@Directive({
selector: '[highlighter]',
})

@Input('streetName') streetName: string;

export class HighlighterDirective {
constructor(private host: ElementRef,
private rd: Renderer2) {}
}

ngOnChanges(changes: SimpleChanges) {
if (changes['streetName'].currentValue != changes['streetName'].previousValue) {
this.rd.setStyle(this.host.nativeElement, 'color', 'red')
}
}

附:代码完全来 self 的内存,可能存在某些类型、语法错误。但您明白了 - 指令可以访问组件上定义的相同输入:

<custom-component [streetName] highlighter></custom-component>

然后你可以使用ngOnChanges或其他技术来区分属性何时更改其值并使用 Renderer2(最佳实践),将直接更改应用于 DOM。

关于javascript - Angular:显示两个类组件之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59260172/

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