gpt4 book ai didi

angular - 控制生成的内容 - *ngIf 的转译/编译时间版本

转载 作者:行者123 更新时间:2023-12-04 02:29:42 24 4
gpt4 key购买 nike

目标是从同一代码库生成 2 个不同的应用程序,一个供用户使用,另一个供管理员使用。它们非常相似,我只是想禁用一些 block 。我现在通过 *ngIf 和环境变量

解决这个问题的方式
User stuff

<div *ngIf="environment.adminVersion">
Admin stuff
<div (click)="adminFunction()"></div>
</div>

重点是我想让用户版本更轻,用户不需要所有管理内容就可以使用该应用程序。我的问题是,这些 block 是否完全从转译版本中删除?

是否还有一种方法可以实现这一逻辑?

class welcomePage() {
userFunction() {
}

adminFunction() {
if (environment.adminVersion) {
Do admin stuff...
}
}
}

angular/typescript 中是否有等效的 C 预处理器控件?最好的方法是什么?我想我正在寻找的是这样的东西,它甚至在编译之前就被删除或添加了:

#define version admin

User stuff

#if version==admin

Admin stuff
<div (click)="adminFunction()"></div>

#endif
#if version==admin

class welcomePage() {
userFunction() {
}

#if version==admin
adminFunction() {
if (environment.adminVersion) {
Do admin stuff...
}
}
#endif
}

最佳答案

这并没有具体回答您的问题,但我相信它可以解决同样的问题。

我们将 grunt 用作构建过程的一部分,并使用 grunt-preprocess 模块来让我们完全按照您的意愿进行操作。它会预处理您的模板和源代码,以根据构建变量去除包裹在 @ifdef/@endif 注释中的代码。

https://github.com/jsoverson/grunt-preprocess

文档中的示例:

<body>
<!-- @ifdef DEBUG -->
<h1>Debugging mode - <!-- @echo RELEASE_TAG --> </h1>
<!-- @endif -->
<p>
<!-- @include welcome_message.txt -->
</p>
</body>

var configValue = '/* @echo FOO */' || 'default value';

// @ifdef DEBUG
someDebuggingCall()
// @endif

这个例子是关于调试的,但它也可以很容易地用于管理构建。

不确定您是否使用 grunt,但如果没有,也许您的构建工具有类似的东西。

关于angular - 控制生成的内容 - *ngIf 的转译/编译时间版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65020209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com