fix(ivy): error when encountering an empty class attribute (#28321)
Fixes Ivy throwing an error if it encounters an empty class attribute in a template (`class=""`). This PR resolves FW-972. PR Close #28321
This commit is contained in:
parent
9098225ff0
commit
22a43cff4d
|
@ -982,14 +982,17 @@ function setClass(
|
||||||
if (playerBuilder) {
|
if (playerBuilder) {
|
||||||
playerBuilder.setValue(className, add);
|
playerBuilder.setValue(className, add);
|
||||||
}
|
}
|
||||||
} else if (add) {
|
// DOMTokenList will throw if we try to add or remove an empty string.
|
||||||
ngDevMode && ngDevMode.rendererAddClass++;
|
} else if (className !== '') {
|
||||||
isProceduralRenderer(renderer) ? renderer.addClass(native, className) :
|
if (add) {
|
||||||
native['classList'].add(className);
|
ngDevMode && ngDevMode.rendererAddClass++;
|
||||||
} else {
|
isProceduralRenderer(renderer) ? renderer.addClass(native, className) :
|
||||||
ngDevMode && ngDevMode.rendererRemoveClass++;
|
native['classList'].add(className);
|
||||||
isProceduralRenderer(renderer) ? renderer.removeClass(native, className) :
|
} else {
|
||||||
native['classList'].remove(className);
|
ngDevMode && ngDevMode.rendererRemoveClass++;
|
||||||
|
isProceduralRenderer(renderer) ? renderer.removeClass(native, className) :
|
||||||
|
native['classList'].remove(className);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -317,6 +317,13 @@ function declareTests(config?: {useJit: boolean}) {
|
||||||
expect(ctx.componentInstance.viewContainers.first).toBe(vc);
|
expect(ctx.componentInstance.viewContainers.first).toBe(vc);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not throw when encountering an empty class attribute', () => {
|
||||||
|
const template = '<div class=""></div>';
|
||||||
|
TestBed.overrideComponent(MyComp1, {set: {template}});
|
||||||
|
|
||||||
|
expect(() => TestBed.createComponent(MyComp1)).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
describe('empty templates - #15143', () => {
|
describe('empty templates - #15143', () => {
|
||||||
it('should allow empty components', () => {
|
it('should allow empty components', () => {
|
||||||
@Component({template: ''})
|
@Component({template: ''})
|
||||||
|
|
Loading…
Reference in New Issue