fix(compiler): emit correct type-check-blocks with TemplateRef's (#20463)

The type-check block generated with `"fullTemplateTypeCheck"` was
invalid if the it contained a template ref as would be generated
using the `else` micro-syntax of `NgIf`.

Fixes: #19485

PR Close #20463
This commit is contained in:
Chuck Jazdzewski
2017-11-15 13:20:51 -08:00
committed by Miško Hevery
parent 368cb5ad4e
commit 68b53c07fd
2 changed files with 35 additions and 1 deletions

View File

@ -87,6 +87,23 @@ describe('ng type checker', () => {
addTests({fullTemplateTypeCheck: true});
});
describe('regressions', () => {
// #19485
it('should accept if else (TemplateRef)', () => {
accept(
{
'src/app.component.html': `
<div class="text-center" *ngIf="!person; else e">
No person supplied.
</div>
<ng-template #e>
Welcome {{person.name}}!
<ng-template>`
},
{fullTemplateTypeCheck: true});
});
});
function addTests(config: {fullTemplateTypeCheck: boolean}) {
function a(template: string) { accept({'src/app.component.html': template}, config); }
@ -234,6 +251,7 @@ const QUICKSTART = {
`,
'src/app.module.ts': `
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppComponent, APipe, ADirective } from './app.component';
import { LibDirective, LibPipe } from './lib';
@ -246,7 +264,7 @@ const QUICKSTART = {
@NgModule({
declarations: [ AppComponent, APipe, ADirective ],
bootstrap: [ AppComponent ],
imports: [ LibModule ]
imports: [ LibModule, CommonModule ]
})
export class AppModule { }
`