首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用<模板ngFor>代替*ngFor时的奇怪间隙

使用<模板ngFor>代替*ngFor时的奇怪间隙
EN

Stack Overflow用户
提问于 2017-10-13 13:56:14
回答 1查看 137关注 0票数 1

让以下代码:

代码语言:javascript
复制
<template ngFor [ngForOf]="items" let-item>
            <li>
                <a class='dnp1-menu-link' [routerLink]="[item.route]">
                    <span>{{item.label}}</span>
                </a>
            </li>
</template>

和:

代码语言:javascript
复制
<li *ngFor="let item of items">
        <a class='dnp1-menu-link {{ item.domClass }}' [routerLink]="[item.route]">
            <span> {{item.label}} </span>
        </a>
</li>

我认为这两个片段会导致相同的行为,但是:

第一个片段结果:

第二个是:

这是意料之中吗?为什么?

我已经意识到原因是模板和跟随标记之间的"\n“,例如,这是有效的:

代码语言:javascript
复制
<template ngFor [ngForOf]="items" let-item><li>
    <a class='dnp1-menu-link' [routerLink]="[item.route]">
        <span>{{item.label}}</span>
    </a>
</li></template>

尽管如此,我还是不明白为什么,也不知道这是否是一个bug或特性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-13 15:45:00

正如@yurzui所说,问题在于组件中的"preserveWhitespaces“。

因为组件的默认行为是保留任何空白。

以下两个片段将产生两个不同的DOM:

代码语言:javascript
复制
<template><tag></tag></template>

<template>
    <tag></tag>
</template>

一个

代码语言:javascript
复制
<div *ngFor="...">

在DOM中没有尾随空间,这是差异的来源。

为了实现同样的行为,我们可以将preserveWhiteSpaces设置为false;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46731609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档