我有一个提供模型对象的组件,该模型对象可以是几种类型,它是哪种类型决定了将在内部呈现什么组件:

<div [ngSwitch]="poolModel.runtimeType.toString()">
    <template ngSwitchCase="CryptonoteMiningPool"><cryptonote-pool [model]="poolModel"></cryptonote-pool></template>
    <template ngSwitchCase="DaggerHashimotoMiningPool"><dag-hash-pool [model]="poolModel"></dag-hash-pool></template>
</div>

这在 Debug模式下效果很好,但是当我为发行版进行编译时,runtimeType总是返回“fS”。

我有一个解决方案,本质上是在模型中设置一个常量并查看该常量,但如果可以避免的话,宁愿没有麻烦,因为我最终可能需要维护许多类型的模型。

有没有一种方法可以使runtimeType返回 Release模式下的期望值?

最佳答案

运行时类型不是我要用于程序逻辑的东西。它会根据编译器选项进行更改,实际上甚至使用它也会使您的应用程序(在dart2js中)的优化工作更加困难。

我们在dart2js性能指南中禁止使用它。

您最好创建某种基类:

abstract class DynamicRender {
  String get renderType;
}

并让您的类扩展/混合/实现并改为使用它。

10-01 02:55