feat(ivy): support for the ngForOf directive, with tests (#21430)
Implement NgOnChangesFeature, ViewContainerRef, TemplateRef, and the renderEmbeddedTemplate instruction, and wire together the pieces required for the ngForOf directive to work. PR Close #21430
This commit is contained in:

committed by
Miško Hevery

parent
6472661ae8
commit
0ad02de47e
@ -66,6 +66,13 @@ export interface LContainer {
|
||||
* The template extracted from the location of the Container.
|
||||
*/
|
||||
readonly template: ComponentTemplate<any>|null;
|
||||
|
||||
|
||||
/**
|
||||
* A count of dynamic views rendered into this container. If this is non-zero, the `views` array
|
||||
* will be traversed when refreshing dynamic views on this container.
|
||||
*/
|
||||
dynamicViewCount: number;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,6 @@ import {resolveRendererType2} from '../../view/util';
|
||||
export type ComponentTemplate<T> = {
|
||||
(ctx: T, creationMode: boolean): void; ngPrivateData?: never;
|
||||
};
|
||||
export type EmbeddedTemplate<T> = (ctx: T) => void;
|
||||
|
||||
export interface ComponentType<T> extends Type<T> { ngComponentDef: ComponentDef<T>; }
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
*/
|
||||
|
||||
import {LContainer} from './container';
|
||||
import {DirectiveDef} from './definition';
|
||||
import {ComponentTemplate, DirectiveDef} from './definition';
|
||||
import {LElementNode, LViewNode, TNode} from './node';
|
||||
import {Renderer3} from './renderer';
|
||||
|
||||
@ -138,6 +138,24 @@ export interface LView {
|
||||
* directive defs are stored).
|
||||
*/
|
||||
tView: TView;
|
||||
|
||||
/**
|
||||
* For dynamically inserted views, the template function to refresh the view.
|
||||
*/
|
||||
template: ComponentTemplate<{}>|null;
|
||||
|
||||
/**
|
||||
* For embedded views, the context with which to render the template.
|
||||
*/
|
||||
context: {}|null;
|
||||
|
||||
/**
|
||||
* A count of dynamic views that are children of this view (indirectly via containers).
|
||||
*
|
||||
* This is used to decide whether to scan children of this view when refreshing dynamic views
|
||||
* after refreshing the view itself.
|
||||
*/
|
||||
dynamicViewCount: number;
|
||||
}
|
||||
|
||||
/** Interface necessary to work with view tree traversal */
|
||||
|
Reference in New Issue
Block a user