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) {
|
||||
playerBuilder.setValue(className, add);
|
||||
}
|
||||
} else if (add) {
|
||||
ngDevMode && ngDevMode.rendererAddClass++;
|
||||
isProceduralRenderer(renderer) ? renderer.addClass(native, className) :
|
||||
native['classList'].add(className);
|
||||
} else {
|
||||
ngDevMode && ngDevMode.rendererRemoveClass++;
|
||||
isProceduralRenderer(renderer) ? renderer.removeClass(native, className) :
|
||||
native['classList'].remove(className);
|
||||
// DOMTokenList will throw if we try to add or remove an empty string.
|
||||
} else if (className !== '') {
|
||||
if (add) {
|
||||
ngDevMode && ngDevMode.rendererAddClass++;
|
||||
isProceduralRenderer(renderer) ? renderer.addClass(native, className) :
|
||||
native['classList'].add(className);
|
||||
} else {
|
||||
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);
|
||||
});
|
||||
|
||||
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', () => {
|
||||
it('should allow empty components', () => {
|
||||
@Component({template: ''})
|
||||
|
|
Loading…
Reference in New Issue