fix(change_detection): convert interpolated null values to empty strings

Fixes #3007

Closes #3271
This commit is contained in:
Pawel Kozlowski
2015-07-24 16:29:50 +02:00
parent 16493e9769
commit 345fa521dd
4 changed files with 25 additions and 1 deletions

View File

@ -302,6 +302,15 @@ export function main() {
expect(val.dispatcher.log).toEqual(['propName=BvalueA']);
});
it('should output empty strings for null values in interpolation', () => {
var val = _createChangeDetector('interpolation', new TestData('value'));
val.changeDetector.hydrate(new TestData(null), null, null, null);
val.changeDetector.detectChanges();
expect(val.dispatcher.log).toEqual(['propName=BA']);
});
it('should escape values in literals that indicate interpolation',
() => { expect(_bindSimpleValue('"$"')).toEqual(['propName=$']); });

View File

@ -94,6 +94,19 @@ export function main() {
});
}));
it('should update text node with a blank string when interpolation evaluates to null',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
tcb.overrideView(MyComp, new viewAnn.View({template: '<div>{{null}}{{ctxProp}}</div>'}))
.createAsync(MyComp)
.then((rootTC) => {
rootTC.componentInstance.ctxProp = null;
rootTC.detectChanges();
expect(rootTC.nativeElement).toHaveText('');
async.done();
});
}));
it('should consume element binding changes',
inject([TestComponentBuilder, AsyncTestCompleter], (tcb: TestComponentBuilder, async) => {
tcb.overrideView(MyComp, new viewAnn.View({template: '<div [id]="ctxProp"></div>'}))