项目

ContextStrategy(上下文策略)

ContextStrategy是由@abp/ng.core包提供的抽象类。目前有三种继承该类的上下文策略:ComponentContextStrategyTemplateContextStrategyNoContextStrategy。这些策略实现了相同的方法和属性,帮助您定义投影内容如何获取上下文。

ComponentContextStrategy(组件上下文策略)

ComponentContextStrategy继承自ContextStrategy,允许您向投影组件传递上下文

构造函数

constructor(public context: Partial<InferredInstanceOf<T>>) {}
  • T表示组件类型,即Type<C>
  • InferredInstanceOf是由@abp/ng.core包提供的工具类型,用于推断组件结构
  • context将被映射到投影组件的属性

setContext方法

setContext(componentRef: ComponentRef<InferredInstanceOf<T>>): Partial<InferredInstanceOf<T>>

该方法将上下文的每个属性映射到同名组件属性,并触发变更检测。返回映射后的上下文。

TemplateContextStrategy(模板上下文策略)

TemplateContextStrategy继承自ContextStrategy,允许您向投影模板传递上下文

构造函数

constructor(public context: Partial<InferredContextOf<T>>) {}
  • T表示模板上下文类型,即TemplateRef<C>
  • InferredContextOf是由@abp/ng.core包提供的工具类型,用于推断上下文结构
  • context将被映射到投影模板的属性

setContext方法

setContext(): Partial<InferredContextOf<T>>

该方法不执行任何操作,仅返回上下文,因为模板上下文不会进行映射,而是作为参数传递给createEmbeddedView方法。

NoContextStrategy(无上下文策略)

NoContextStrategy继承自ContextStrategy,允许您跳过向投影内容传递任何上下文

构造函数

constructor()

与其他上下文策略不同,NoContextStrategy构造函数不接收任何参数。

setContext方法

setContext(): undefined

由于不存在上下文,此方法不接收参数并返回undefined

预定义上下文策略

预定义的上下文策略可通过CONTEXT_STRATEGY常量访问。

None(无上下文)

CONTEXT_STRATEGY.None()

此策略不会向投影内容传递任何上下文。

Component(组件上下文)

CONTEXT_STRATEGY.Component(context: Partial<InferredContextOf<T>>)

此策略帮助您将指定上下文传递给投影组件。

Template(模板上下文)

CONTEXT_STRATEGY.Template(context: Partial<InferredContextOf<T>>)

此策略帮助您将指定上下文传递给投影模板。

相关参考

在本文档中