fix(core): treat [class]
and [className]
as unrelated bindings (#35668)
Before this change `[class]` and `[className]` were both converted into `ɵɵclassMap`. The implication of this is that at runtime we could not differentiate between the two and as a result we treated `@Input('class')` and `@Input('className)` as equivalent. This change makes `[class]` and `[className]` distinct. The implication of this is that `[class]` becomes `ɵɵclassMap` instruction but `[className]` becomes `ɵɵproperty' instruction. This means that `[className]` will no longer participate in styling and will overwrite the DOM `class` value. Fix #35577 PR Close #35668
This commit is contained in:
@ -202,8 +202,7 @@ export class StylingBuilder {
|
||||
let binding: BoundStylingEntry|null = null;
|
||||
const prefix = name.substring(0, 6);
|
||||
const isStyle = name === 'style' || prefix === 'style.' || prefix === 'style!';
|
||||
const isClass = !isStyle &&
|
||||
(name === 'class' || name === 'className' || prefix === 'class.' || prefix === 'class!');
|
||||
const isClass = !isStyle && (name === 'class' || prefix === 'class.' || prefix === 'class!');
|
||||
if (isStyle || isClass) {
|
||||
const isMapBased = name.charAt(5) !== '.'; // style.prop or class.prop makes this a no
|
||||
const property = name.substr(isMapBased ? 5 : 6); // the dot explains why there's a +1
|
||||
|
Reference in New Issue
Block a user