javascript - 使用 *ngIf 仅更改相同内容周围的 div

标签 javascript html angular angular6

我正在尝试创建一个始终围绕相同内容的不同 div。但是,我无法创建重复的内容,因为 div 内有一个输入,并且它会抛出一个错误,提示“此 id 已在使用中”

我尝试这样做:

<div *ngIf="true" x="" y="" ngClass=[example]>
    <input id="{{ aux }}"/>
</div> 

然后为另一种情况创建另一个 div:

<div *ngIf="false" ngClass=[example]>
    <input id="{{ aux }}"/>
</div>

所以我想要完成的是:

正如我之前所展示的,我有一个 div,它接受一个变量(true 或 false),并且根据变量它会有不同的指令,由下面的 x、y 表示。

<div ngIf="true" x="" y="" ngClass=[example]>
    //same content
</div>
<div ngIf="false" ngClass=[example]>
    //same content
</div>

我希望能够创建一个动态条件,仅适用于添加指令的周围 div 包装器(它是唯一改变的东西),而不是复制内容并向我抛出此错误

我收到的错误是:该 ID 已在使用中。

谁能帮我吗?

最佳答案

您可以通过在另一个 ng-template 中使用 ngIfElse 来限制 id 重用并防止此错误。来自 angular.io documentation 的示例:

<div *ngIf="condition; else elseBlock">Content to render when condition is true.</div>
<ng-template #elseBlock>Content to render when condition is false.</ng-template>

具体到您的用例,代码将是:

<div ngIf="true; else falseTemplate" x="" y="" ngClass=[example]>
    //same content
</div>
<ng-template #falseTemplate>
    <div ngClass=[example]>
    //same content
    </div>
</div>

但是,经过仔细检查,您似乎希望仅在条件成立时提供 x 和 y 的属性值。您可以通过将 false 时的 null 值绑定(bind)到 target attribute 来简化代码。 。下面的示例使用三元运算符,但您可以通过将每个属性各自的三元操作移动到组件端方法中来进一步清理此代码(例如: getXValue() : number | null)。

<div [attr.x]="true ? '' : null" [attr.y]="true ? '': null" ngClass=[example]>
    //same content
</div>

关于javascript - 使用 *ngIf 仅更改相同内容周围的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56588712/

相关文章:

javascript - 使用 Angular prime ng 导入文件问题

javascript - .hide() 隐藏容器 div 单击而不只是处理?

html - 防止文本区域缩放字段集

jquery - 如何继续允许用户单击直到某个点?

angular - ErrorHandler 中的循环依赖

javascript - Internet Explorer 11 向 Post Request 中的 Typescript Map 添加值

javascript - 如何在 Textmate 中创建自定义符号列表项?

javascript - 如何使用正则表达式匹配包含字符串的所有路径,但前提是它们是子文件夹的子文件夹?

javascript - 教程中的 Angular 2 ZoneAwareError,但仅适用于 chrome

php - PHP 中选择元素的默认值