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.
*/
export function textBinding<T>(index: number, value: T | NO_CHANGE): void {
ngDevMode && assertDataInRange(index);
let existingNode = data[index] as LTextNode;
ngDevMode && assertNotNull(existingNode, 'LNode should exist');
ngDevMode && assertNotNull(existingNode.native, 'native element should exist');
ngDevMode && ngDevMode.rendererSetText++;
value !== NO_CHANGE &&
(isProceduralRenderer(renderer) ? renderer.setValue(existingNode.native, stringify(value)) :
existingNode.native.textContent = stringify(value));
if (value !== NO_CHANGE) {
ngDevMode && assertDataInRange(index);
const existingNode = data[index] as LTextNode;
ngDevMode && assertNotNull(existingNode, 'LNode should exist');
ngDevMode && assertNotNull(existingNode.native, 'native element should exist');
ngDevMode && ngDevMode.rendererSetText++;
isProceduralRenderer(renderer) ? renderer.setValue(existingNode.native, 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, undefined)).toEqual('');
expect(ngDevMode).toHaveProperties({
firstTemplatePass: 0,
tNode: 0,
tView: 1,
rendererSetText: 2,
});
});
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, null)).toEqual('');
expect(ngDevMode).toHaveProperties({
firstTemplatePass: 0,
tNode: 0,
tView: 1,
rendererSetText: 2,
});
});
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, 'twice')).toEqual('once');
expect(ngDevMode).toHaveProperties({
firstTemplatePass: 0,
tNode: 0,
tView: 1,
rendererSetText: 1,
});
});
});