refactor: move angular source to /packages rather than modules/@angular
This commit is contained in:
@ -0,0 +1 @@
|
||||
<div></div>
|
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({selector: 'my-comp', template: '<div></div>'})
|
||||
export class MultipleComponentsMyComp {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'next-comp',
|
||||
templateUrl: './multiple_components.html',
|
||||
})
|
||||
export class NextComp {
|
||||
}
|
||||
|
||||
// Verify that exceptions from DirectiveResolver don't propagate
|
||||
export function NotADirective(c: any): void {}
|
||||
@NotADirective
|
||||
export class HasCustomDecorator {
|
||||
}
|
||||
|
||||
// Verify that custom decorators have metadata collected, eg Ionic
|
||||
export function Page(c: any): (f: Function) => void {
|
||||
return NotADirective;
|
||||
}
|
||||
|
||||
@Page({template: 'Ionic template'})
|
||||
export class AnIonicPage {
|
||||
}
|
37
packages/compiler-cli/integrationtest/src/animate.ts
Normal file
37
packages/compiler-cli/integrationtest/src/animate.ts
Normal file
@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
import {AUTO_STYLE, animate, state, style, transition, trigger} from '@angular/animations';
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'animate-cmp',
|
||||
animations: [trigger(
|
||||
'openClose',
|
||||
[
|
||||
state('*', style({height: AUTO_STYLE, color: 'black', borderColor: 'black'})),
|
||||
state('closed, void', style({height: '0px', color: 'maroon', borderColor: 'maroon'})),
|
||||
state('open', style({height: AUTO_STYLE, borderColor: 'green', color: 'green'})),
|
||||
transition('* => *', animate('1s'))
|
||||
])],
|
||||
template: `
|
||||
<button (click)="setAsOpen()">Open</button>
|
||||
<button (click)="setAsClosed()">Closed</button>
|
||||
<button (click)="setAsSomethingElse()">Something Else</button>
|
||||
<hr />
|
||||
<div [@openClose]="stateExpression">
|
||||
Look at this box
|
||||
</div>
|
||||
`
|
||||
})
|
||||
export class AnimateCmp {
|
||||
stateExpression: string;
|
||||
constructor() { this.setAsClosed(); }
|
||||
setAsSomethingElse() { this.stateExpression = 'something'; }
|
||||
setAsOpen() { this.stateExpression = 'open'; }
|
||||
setAsClosed() { this.stateExpression = 'closed'; }
|
||||
}
|
3
packages/compiler-cli/integrationtest/src/basic.css
Normal file
3
packages/compiler-cli/integrationtest/src/basic.css
Normal file
@ -0,0 +1,3 @@
|
||||
@import './shared.css';
|
||||
|
||||
.green { color: green }
|
5
packages/compiler-cli/integrationtest/src/basic.html
Normal file
5
packages/compiler-cli/integrationtest/src/basic.html
Normal file
@ -0,0 +1,5 @@
|
||||
<div [attr.array]="[0]" [attr.map]="{a:1}" title="translate me" i18n-title="meaning|desc">{{ctxProp}}</div>
|
||||
<form><input type="button" [(ngModel)]="ctxProp" name="first"/></form>
|
||||
<my-comp *ngIf="ctxBool"></my-comp>
|
||||
<div *ngFor="let x of ctxArr" [attr.value]="x"></div>
|
||||
<p id="welcomeMessage"><!--i18n-->Welcome<!--/i18n--></p>
|
28
packages/compiler-cli/integrationtest/src/basic.ts
Normal file
28
packages/compiler-cli/integrationtest/src/basic.ts
Normal file
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {NgFor, NgIf} from '@angular/common';
|
||||
import {Component, Inject, LOCALE_ID, TRANSLATIONS_FORMAT} from '@angular/core';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'basic',
|
||||
templateUrl: './basic.html',
|
||||
styles: ['.red { color: red }'],
|
||||
styleUrls: ['./basic.css'],
|
||||
})
|
||||
export class BasicComp {
|
||||
ctxProp: string;
|
||||
ctxBool: boolean;
|
||||
ctxArr: any[] = [];
|
||||
constructor(
|
||||
@Inject(LOCALE_ID) public localeId: string,
|
||||
@Inject(TRANSLATIONS_FORMAT) public translationsFormat: string) {
|
||||
this.ctxProp = 'initialValue';
|
||||
}
|
||||
}
|
13
packages/compiler-cli/integrationtest/src/bootstrap.ts
Normal file
13
packages/compiler-cli/integrationtest/src/bootstrap.ts
Normal file
@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {platformBrowser} from '@angular/platform-browser';
|
||||
import {BasicComp} from './basic';
|
||||
import {MainModuleNgFactory} from './module.ngfactory';
|
||||
|
||||
MainModuleNgFactory.create(null).instance.appRef.bootstrap(BasicComp);
|
18
packages/compiler-cli/integrationtest/src/comp_using_3rdp.ts
Normal file
18
packages/compiler-cli/integrationtest/src/comp_using_3rdp.ts
Normal file
@ -0,0 +1,18 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'use-third-party',
|
||||
template: '<third-party-comp [thirdParty]="title"></third-party-comp>' +
|
||||
'<another-third-party-comp></another-third-party-comp>',
|
||||
})
|
||||
export class ComponentUsingThirdParty {
|
||||
title: string = 'from 3rd party';
|
||||
}
|
10
packages/compiler-cli/integrationtest/src/dep.d.ts
vendored
Normal file
10
packages/compiler-cli/integrationtest/src/dep.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
// Verify we don't try to extract metadata for .d.ts files
|
||||
export declare var a: string;
|
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ANALYZE_FOR_ENTRY_COMPONENTS, Component, ComponentFactoryResolver, Inject, InjectionToken} from '@angular/core';
|
||||
|
||||
import {BasicComp} from './basic';
|
||||
|
||||
@Component({selector: 'cmp-entryComponents', template: '', entryComponents: [BasicComp]})
|
||||
export class CompWithEntryComponents {
|
||||
constructor(public cfr: ComponentFactoryResolver) {}
|
||||
}
|
||||
|
||||
export const SOME_TOKEN = new InjectionToken('someToken');
|
||||
|
||||
export function provideValueWithEntryComponents(value: any) {
|
||||
return [
|
||||
{provide: SOME_TOKEN, useValue: value},
|
||||
{provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: value, multi: true},
|
||||
];
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'comp-entryComponents-provider',
|
||||
template: '',
|
||||
providers: [provideValueWithEntryComponents([{a: 'b', component: BasicComp}])]
|
||||
})
|
||||
export class CompWithAnalyzeEntryComponentsProvider {
|
||||
constructor(public cfr: ComponentFactoryResolver, @Inject(SOME_TOKEN) public providedValue: any) {
|
||||
}
|
||||
}
|
79
packages/compiler-cli/integrationtest/src/features.ts
Normal file
79
packages/compiler-cli/integrationtest/src/features.ts
Normal file
@ -0,0 +1,79 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import * as common from '@angular/common';
|
||||
import {CUSTOM_ELEMENTS_SCHEMA, Component, Directive, EventEmitter, Inject, InjectionToken, NgModule, Output} from '@angular/core';
|
||||
import {Observable} from 'rxjs/Observable';
|
||||
|
||||
import {wrapInArray} from './funcs';
|
||||
|
||||
export const SOME_INJECTON_TOKEN = new InjectionToken('injectionToken');
|
||||
|
||||
@Component({
|
||||
selector: 'comp-providers',
|
||||
template: '',
|
||||
providers: [
|
||||
{provide: 'strToken', useValue: 'strValue'},
|
||||
{provide: SOME_INJECTON_TOKEN, useValue: 10},
|
||||
{provide: 'reference', useValue: common.NgIf},
|
||||
{provide: 'complexToken', useValue: {a: 1, b: ['test', SOME_INJECTON_TOKEN]}},
|
||||
]
|
||||
})
|
||||
export class CompWithProviders {
|
||||
constructor(@Inject('strToken') public ctxProp: string) {}
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'cmp-reference',
|
||||
template: `
|
||||
<input #a [(ngModel)]="foo" required>{{a.value}}
|
||||
<div *ngIf="true">{{a.value}}</div>
|
||||
`
|
||||
})
|
||||
export class CompWithReferences {
|
||||
foo: string;
|
||||
}
|
||||
|
||||
@Component({selector: 'cmp-pipes', template: `<div *ngIf>{{test | somePipe}}</div>`})
|
||||
export class CompUsingPipes {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'cmp-custom-els',
|
||||
template: `
|
||||
<some-custom-element [someUnknownProp]="true"></some-custom-element>
|
||||
`,
|
||||
})
|
||||
export class CompUsingCustomElements {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'cmp-event',
|
||||
template: `
|
||||
<div (click)="handleDomEventVoid($event)"></div>
|
||||
<div (click)="handleDomEventPreventDefault($event)"></div>
|
||||
<div (dirEvent)="handleDirEvent($event)"></div>
|
||||
`,
|
||||
})
|
||||
export class CompConsumingEvents {
|
||||
handleDomEventVoid(e: any): void {}
|
||||
handleDomEventPreventDefault(e: any): boolean { return false; }
|
||||
handleDirEvent(e: any): void {}
|
||||
}
|
||||
|
||||
@Directive({
|
||||
selector: '[dirEvent]',
|
||||
})
|
||||
export class DirPublishingEvents {
|
||||
@Output('dirEvent')
|
||||
dirEvent: Observable<string> = new EventEmitter();
|
||||
}
|
||||
|
||||
@NgModule({schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: wrapInArray(CompUsingCustomElements)})
|
||||
export class ModuleUsingCustomElements {
|
||||
}
|
11
packages/compiler-cli/integrationtest/src/funcs.ts
Normal file
11
packages/compiler-cli/integrationtest/src/funcs.ts
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
export function wrapInArray(value: any): any[] {
|
||||
return [value];
|
||||
}
|
21
packages/compiler-cli/integrationtest/src/messages.fi.xlf
Normal file
21
packages/compiler-cli/integrationtest/src/messages.fi.xlf
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" datatype="plaintext" original="ng2.template">
|
||||
<body>
|
||||
<trans-unit id="76e1eccb1b772fa9f294ef9c146ea6d0efa8a2d4" datatype="html">
|
||||
<source>translate me</source>
|
||||
<target>käännä teksti</target>
|
||||
<note priority="1" from="description">desc</note>
|
||||
<note priority="1" from="meaning">meaning</note>
|
||||
</trans-unit>
|
||||
<trans-unit id="65cc4ab3b4c438e07c89be2b677d08369fb62da2" datatype="html">
|
||||
<source>Welcome</source>
|
||||
<target>tervetuloa</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="63a85808f03b8181e36a952e0fa38202c2304862" datatype="html">
|
||||
<source>other-3rdP-component</source>
|
||||
<target>other-3rdP-component</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
94
packages/compiler-cli/integrationtest/src/module.ts
Normal file
94
packages/compiler-cli/integrationtest/src/module.ts
Normal file
@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ApplicationRef, NgModule, NgZone, Provider, RendererFactory2} from '@angular/core';
|
||||
import {FormsModule} from '@angular/forms';
|
||||
import {NoopAnimationsModule, ɵAnimationEngine, ɵAnimationRendererFactory} from '@angular/platform-browser/animations';
|
||||
import {ServerModule, ɵServerRendererFactory2} from '@angular/platform-server';
|
||||
import {MdButtonModule} from '@angular2-material/button';
|
||||
// Note: don't refer to third_party_src as we want to test that
|
||||
// we can compile components from node_modules!
|
||||
import {ThirdpartyModule} from 'third_party/module';
|
||||
|
||||
import {MultipleComponentsMyComp, NextComp} from './a/multiple_components';
|
||||
import {AnimateCmp} from './animate';
|
||||
import {BasicComp} from './basic';
|
||||
import {ComponentUsingThirdParty} from './comp_using_3rdp';
|
||||
import {CompWithAnalyzeEntryComponentsProvider, CompWithEntryComponents} from './entry_components';
|
||||
import {CompConsumingEvents, CompUsingPipes, CompWithProviders, CompWithReferences, DirPublishingEvents, ModuleUsingCustomElements} from './features';
|
||||
import {CompUsingRootModuleDirectiveAndPipe, SomeDirectiveInRootModule, SomeLibModule, SomePipeInRootModule, SomeService} from './module_fixtures';
|
||||
import {CompWithNgContent, ProjectingComp} from './projection';
|
||||
import {CompForChildQuery, CompWithChildQuery, CompWithDirectiveChild, DirectiveForQuery} from './queries';
|
||||
|
||||
export function instantiateServerRendererFactory(
|
||||
renderer: RendererFactory2, engine: ɵAnimationEngine, zone: NgZone) {
|
||||
return new ɵAnimationRendererFactory(renderer, engine, zone);
|
||||
}
|
||||
|
||||
// TODO(matsko): create a server module for animations and use
|
||||
// that instead of these manual providers here.
|
||||
export const SERVER_ANIMATIONS_PROVIDERS: Provider[] = [{
|
||||
provide: RendererFactory2,
|
||||
useFactory: instantiateServerRendererFactory,
|
||||
deps: [ɵServerRendererFactory2, ɵAnimationEngine, NgZone]
|
||||
}];
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AnimateCmp,
|
||||
BasicComp,
|
||||
CompConsumingEvents,
|
||||
CompForChildQuery,
|
||||
CompUsingPipes,
|
||||
CompUsingRootModuleDirectiveAndPipe,
|
||||
CompWithAnalyzeEntryComponentsProvider,
|
||||
CompWithChildQuery,
|
||||
CompWithDirectiveChild,
|
||||
CompWithEntryComponents,
|
||||
CompWithNgContent,
|
||||
CompWithProviders,
|
||||
CompWithReferences,
|
||||
DirectiveForQuery,
|
||||
DirPublishingEvents,
|
||||
MultipleComponentsMyComp,
|
||||
NextComp,
|
||||
ProjectingComp,
|
||||
SomeDirectiveInRootModule,
|
||||
SomePipeInRootModule,
|
||||
ComponentUsingThirdParty,
|
||||
],
|
||||
imports: [
|
||||
NoopAnimationsModule,
|
||||
ServerModule,
|
||||
FormsModule,
|
||||
MdButtonModule,
|
||||
ModuleUsingCustomElements,
|
||||
SomeLibModule.withProviders(),
|
||||
ThirdpartyModule,
|
||||
],
|
||||
providers: [
|
||||
SomeService,
|
||||
SERVER_ANIMATIONS_PROVIDERS,
|
||||
],
|
||||
entryComponents: [
|
||||
AnimateCmp,
|
||||
BasicComp,
|
||||
CompUsingRootModuleDirectiveAndPipe,
|
||||
CompWithAnalyzeEntryComponentsProvider,
|
||||
CompWithChildQuery,
|
||||
CompWithEntryComponents,
|
||||
CompWithReferences,
|
||||
ProjectingComp,
|
||||
ComponentUsingThirdParty,
|
||||
]
|
||||
})
|
||||
export class MainModule {
|
||||
constructor(public appRef: ApplicationRef) {}
|
||||
|
||||
ngDoBootstrap() {}
|
||||
}
|
75
packages/compiler-cli/integrationtest/src/module_fixtures.ts
Normal file
75
packages/compiler-cli/integrationtest/src/module_fixtures.ts
Normal file
@ -0,0 +1,75 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {LowerCasePipe, NgIf} from '@angular/common';
|
||||
import {ANALYZE_FOR_ENTRY_COMPONENTS, Component, ComponentFactoryResolver, Directive, Inject, Injectable, InjectionToken, Input, ModuleWithProviders, NgModule, Pipe} from '@angular/core';
|
||||
|
||||
@Injectable()
|
||||
export class SomeService {
|
||||
public prop = 'someValue';
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class ServiceUsingLibModule {
|
||||
}
|
||||
|
||||
@Directive({selector: '[someDir]', host: {'[title]': 'someDir'}})
|
||||
export class SomeDirectiveInRootModule {
|
||||
@Input()
|
||||
someDir: string;
|
||||
}
|
||||
|
||||
@Directive({selector: '[someDir]', host: {'[title]': 'someDir'}})
|
||||
export class SomeDirectiveInLibModule {
|
||||
@Input()
|
||||
someDir: string;
|
||||
}
|
||||
|
||||
@Pipe({name: 'somePipe'})
|
||||
export class SomePipeInRootModule {
|
||||
transform(value: string): any { return `transformed ${value}`; }
|
||||
}
|
||||
|
||||
@Pipe({name: 'somePipe'})
|
||||
export class SomePipeInLibModule {
|
||||
transform(value: string): any { return `transformed ${value}`; }
|
||||
}
|
||||
|
||||
@Component({selector: 'comp', template: `<div [someDir]="'someValue' | somePipe"></div>`})
|
||||
export class CompUsingRootModuleDirectiveAndPipe {
|
||||
}
|
||||
|
||||
@Component({selector: 'comp', template: `<div [someDir]="'someValue' | somePipe"></div>`})
|
||||
export class CompUsingLibModuleDirectiveAndPipe {
|
||||
}
|
||||
|
||||
export const SOME_TOKEN = new InjectionToken('someToken');
|
||||
|
||||
export function provideValueWithEntryComponents(value: any) {
|
||||
return [
|
||||
{provide: SOME_TOKEN, useValue: value},
|
||||
{provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: value, multi: true},
|
||||
];
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
declarations: [SomeDirectiveInLibModule, SomePipeInLibModule, CompUsingLibModuleDirectiveAndPipe],
|
||||
exports: [CompUsingLibModuleDirectiveAndPipe],
|
||||
entryComponents: [CompUsingLibModuleDirectiveAndPipe],
|
||||
})
|
||||
export class SomeLibModule {
|
||||
static withProviders() {
|
||||
return {
|
||||
ngModule: SomeLibModule,
|
||||
providers: [
|
||||
ServiceUsingLibModule, provideValueWithEntryComponents(
|
||||
[{a: 'b', component: CompUsingLibModuleDirectiveAndPipe}])
|
||||
]
|
||||
};
|
||||
}
|
||||
}
|
20
packages/compiler-cli/integrationtest/src/projection.ts
Normal file
20
packages/compiler-cli/integrationtest/src/projection.ts
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {Component} from '@angular/core';
|
||||
|
||||
@Component({selector: 'comp-with-proj', template: '<ng-content></ng-content>'})
|
||||
export class CompWithNgContent {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'main',
|
||||
template: '<comp-with-proj><span greeting="Hello world!"></span></comp-with-proj>'
|
||||
})
|
||||
export class ProjectingComp {
|
||||
}
|
37
packages/compiler-cli/integrationtest/src/queries.ts
Normal file
37
packages/compiler-cli/integrationtest/src/queries.ts
Normal file
@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {NgFor} from '@angular/common';
|
||||
import {Component, Directive, QueryList, ViewChild, ViewChildren} from '@angular/core';
|
||||
|
||||
@Component({selector: 'comp-for-child-query', template: 'child'})
|
||||
export class CompForChildQuery {
|
||||
}
|
||||
|
||||
@Component(
|
||||
{selector: 'comp-with-child-query', template: '<comp-for-child-query></comp-for-child-query>'})
|
||||
export class CompWithChildQuery {
|
||||
@ViewChild(CompForChildQuery) child: CompForChildQuery;
|
||||
@ViewChildren(CompForChildQuery) children: QueryList<CompForChildQuery>;
|
||||
}
|
||||
|
||||
@Directive({selector: '[directive-for-query]'})
|
||||
export class DirectiveForQuery {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'comp-with-directive-child',
|
||||
template: `<div>
|
||||
<div *ngFor="let data of divData" directive-for-query>{{data}}</div>
|
||||
</div>`
|
||||
})
|
||||
export class CompWithDirectiveChild {
|
||||
@ViewChildren(DirectiveForQuery) children: QueryList<DirectiveForQuery>;
|
||||
|
||||
divData: string[];
|
||||
}
|
1
packages/compiler-cli/integrationtest/src/shared.css
Normal file
1
packages/compiler-cli/integrationtest/src/shared.css
Normal file
@ -0,0 +1 @@
|
||||
.blue { color: blue }
|
Reference in New Issue
Block a user