fix(ivy): fix performance counter for textBinding instruction (#23924)

PR Close #23924
This commit is contained in:
JoostK 2018-05-15 22:07:20 +02:00 committed by Victor Berchet
parent 1cd9e6c2eb
commit 95074ca303
2 changed files with 27 additions and 8 deletions

View File

@ -1272,14 +1272,15 @@ export function text(index: number, value?: any): void {
* @param value Stringified value to write. * @param value Stringified value to write.
*/ */
export function textBinding<T>(index: number, value: T | NO_CHANGE): void { export function textBinding<T>(index: number, value: T | NO_CHANGE): void {
ngDevMode && assertDataInRange(index); if (value !== NO_CHANGE) {
let existingNode = data[index] as LTextNode; ngDevMode && assertDataInRange(index);
ngDevMode && assertNotNull(existingNode, 'LNode should exist'); const existingNode = data[index] as LTextNode;
ngDevMode && assertNotNull(existingNode.native, 'native element should exist'); ngDevMode && assertNotNull(existingNode, 'LNode should exist');
ngDevMode && ngDevMode.rendererSetText++; ngDevMode && assertNotNull(existingNode.native, 'native element should exist');
value !== NO_CHANGE && ngDevMode && ngDevMode.rendererSetText++;
(isProceduralRenderer(renderer) ? renderer.setValue(existingNode.native, stringify(value)) : isProceduralRenderer(renderer) ? renderer.setValue(existingNode.native, stringify(value)) :
existingNode.native.textContent = stringify(value)); existingNode.native.textContent = stringify(value);
}
} }
////////////////////////// //////////////////////////

View File

@ -68,6 +68,12 @@ describe('render3 integration test', () => {
expect(renderToHtml(Template, 'benoit')).toEqual('benoit'); expect(renderToHtml(Template, 'benoit')).toEqual('benoit');
expect(renderToHtml(Template, undefined)).toEqual(''); expect(renderToHtml(Template, undefined)).toEqual('');
expect(ngDevMode).toHaveProperties({
firstTemplatePass: 0,
tNode: 0,
tView: 1,
rendererSetText: 2,
});
}); });
it('should render "null" as "" when used with `bind()`', () => { it('should render "null" as "" when used with `bind()`', () => {
@ -82,6 +88,12 @@ describe('render3 integration test', () => {
expect(renderToHtml(Template, 'benoit')).toEqual('benoit'); expect(renderToHtml(Template, 'benoit')).toEqual('benoit');
expect(renderToHtml(Template, null)).toEqual(''); expect(renderToHtml(Template, null)).toEqual('');
expect(ngDevMode).toHaveProperties({
firstTemplatePass: 0,
tNode: 0,
tView: 1,
rendererSetText: 2,
});
}); });
it('should support creation-time values in text nodes', () => { it('should support creation-time values in text nodes', () => {
@ -95,6 +107,12 @@ describe('render3 integration test', () => {
} }
expect(renderToHtml(Template, 'once')).toEqual('once'); expect(renderToHtml(Template, 'once')).toEqual('once');
expect(renderToHtml(Template, 'twice')).toEqual('once'); expect(renderToHtml(Template, 'twice')).toEqual('once');
expect(ngDevMode).toHaveProperties({
firstTemplatePass: 0,
tNode: 0,
tView: 1,
rendererSetText: 1,
});
}); });
}); });