feat(core): add ngOnInit and ngDoCheck support in render3 (#21156)
PR Close #21156
This commit is contained in:

committed by
Miško Hevery

parent
8bf1305490
commit
c516bc3b35
@ -39,6 +39,7 @@ export function defineComponent<T>(componentDefinition: ComponentDefArgs<T>): Co
|
||||
template: (componentDefinition as ComponentDefArgs<T>).template || null !,
|
||||
r: componentDefinition.refresh ||
|
||||
function(d: number, e: number) { componentRefresh(d, e, componentDefinition.template); },
|
||||
h: componentDefinition.hostBindings || noop,
|
||||
inputs: invertObject(componentDefinition.inputs),
|
||||
outputs: invertObject(componentDefinition.outputs),
|
||||
methods: invertObject(componentDefinition.methods),
|
||||
@ -59,6 +60,8 @@ export function PublicFeature<T>(definition: DirectiveDef<T>) {
|
||||
|
||||
const EMPTY = {};
|
||||
|
||||
function noop() {}
|
||||
|
||||
/** Swaps the keys and values of an object. */
|
||||
function invertObject(obj: any): any {
|
||||
if (obj == null) return EMPTY;
|
||||
|
@ -68,24 +68,32 @@ export interface DirectiveDef<T> {
|
||||
n(): T;
|
||||
|
||||
/**
|
||||
* Refresh method. Used by the containing component to signal
|
||||
* to the directive that it should be refreshed. (Directives
|
||||
* usually call life cycle methods at this point.)
|
||||
* Refreshes the view of the component. Also calls lifecycle hooks like
|
||||
* ngAfterViewInit, if they are defined on the component.
|
||||
*
|
||||
* NOTE: this property is short (1 char) because it is used in
|
||||
* component templates which is sensitive to size.
|
||||
* NOTE: this property is short (1 char) because it is used in component
|
||||
* templates which is sensitive to size.
|
||||
*
|
||||
* @param directiveIndex index of the directive in the containing template
|
||||
* @param elementIndex index of an host element for a given directive.
|
||||
*/
|
||||
r(directiveIndex: number, elementIndex: number): void;
|
||||
|
||||
/**
|
||||
* Refreshes host bindings on the associated directive. Also calls lifecycle hooks
|
||||
* like ngOnInit and ngDoCheck, if they are defined on the directive.
|
||||
*/
|
||||
// Note: This call must be separate from r() because hooks like ngOnInit need to
|
||||
// be called breadth-first across a view before processing onInits in children
|
||||
// (for backwards compatibility). Child template processing thus needs to be
|
||||
// delayed until all inputs and host bindings in a view have been checked.
|
||||
h(directiveIndex: number, elementIndex: number): void;
|
||||
}
|
||||
|
||||
export interface ComponentDef<T> extends DirectiveDef<T> {
|
||||
/**
|
||||
* Refresh method. Used by the containing component to signal
|
||||
* to the directive that it should be refreshed. (Directives
|
||||
* usually call life cycle methods at this point.)
|
||||
* Refreshes the view of the component. Also calls lifecycle hooks like
|
||||
* ngAfterViewInit, if they are defined on the component.
|
||||
*
|
||||
* NOTE: this property is short (1 char) because it is used in
|
||||
* component templates which is sensitive to size.
|
||||
@ -131,6 +139,7 @@ export interface ComponentDefArgs<T> extends DirectiveDefArgs<T> {
|
||||
tag: string;
|
||||
template: ComponentTemplate<T>;
|
||||
refresh?: (directiveIndex: number, elementIndex: number) => void;
|
||||
hostBindings?: (directiveIndex: number, elementIndex: number) => void;
|
||||
features?: ComponentDefFeature[];
|
||||
rendererType?: RendererType2;
|
||||
}
|
||||
|
Reference in New Issue
Block a user