Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular元素在一行上生成所有HTML_Angular_Angular6_Angular Elements - Fatal编程技术网

Angular元素在一行上生成所有HTML

Angular元素在一行上生成所有HTML,angular,angular6,angular-elements,Angular,Angular6,Angular Elements,这是非常烦人的。很多人可能都知道,在浏览器中,处理内联块元素有点奇怪。如果将两个内联块元素相邻放置,它们将具有不可见的边距,如您在此处所见: 然而,如果他们在同一条线上,奇怪的空间就会消失: 如果我制作一个Angular Elements应用程序(请参阅下面StackBlitz链接中的app.module.ts文件),我的组件中的HTML都在一行上。这意味着我编写的HTML与输出不同。您可以在此处看到一个示例: 正如您所看到的,我的元素明显位于不同的行上: <div> <s

这是非常烦人的。很多人可能都知道,在浏览器中,处理内联块元素有点奇怪。如果将两个内联块元素相邻放置,它们将具有不可见的边距,如您在此处所见:

然而,如果他们在同一条线上,奇怪的空间就会消失:

如果我制作一个Angular Elements应用程序(请参阅下面StackBlitz链接中的
app.module.ts
文件),我的组件中的HTML都在一行上。这意味着我编写的HTML与输出不同。您可以在此处看到一个示例:

正如您所看到的,我的元素明显位于不同的行上:

<div>
  <span>
    span#1
  </span>
  <span>
    span#2
  </span>
</div>

跨度#1
跨度#2
但是,输出在一行上:

这在常规的角度应用程序(而不是角度元素)中效果很好,因此很明显,这是角度元素的问题


有没有办法在角度元素中禁用此功能?它解决了我一开始解释的问题,但这不是我想要的。我希望HTML在编写时输出。

呈现行为由组件装饰器选项控制。如果将选项设置为
true
,则HTML输出中将保留空格,如下所示,如中所示。默认情况下,
preservedWhitespaces
false

@Component({
  ...
  preserveWhitespaces: true
})
export class MyComponent {
}

该渲染行为由“组件装饰器”选项控制。如果将选项设置为
true
,则HTML输出中将保留空格,如下所示,如中所示。默认情况下,
preservedWhitespaces
false

@Component({
  ...
  preserveWhitespaces: true
})
export class MyComponent {
}

有时,你必须克服浏览器的怪癖。显然,如果在每一行中添加span,您希望浏览器在它们之间应用一些边距。在这种情况下,如果角度元素将它们放在一行中,因此您看不到边距,只需应用
display:inline block;边距:0 5px
span
元素,然后继续执行其他任务。@codeepic这并不能解决此问题。我可以很容易地设计出我的方式来解决这个问题,但令人恼火的是,我的HTML与我浏览器中的HTML不一样。你正在使用@Stackblitz,这是一个用于在线代码编辑的虚拟机-他们可能正在使用一些HTML解析器来删除内联元素之间的空格-将
span
标记放在一行中。如果您使用的是代码编辑器,就不会有这个问题。接受它,因为你无法控制Stackblitz如何生成html。或者在Twitter或Discord频道上点击创建者。这是两个家伙,他们非常平易近人。他们认为你在利用小问题制造大问题。在这里,我对它投了更高的票,所以你回到了0。@codeepic如果你想让x而不是y出现,一些框架有不同的标志可以设置。如果他们的决定是让您的代码以不同于您编写代码的方式执行,那么他们的决定肯定是愚蠢的。应该有一种方法来启用它,因此我们的代码和输出是相同的(如预期的)。HTML的基础知识在这里被完全忽略了。有时你不得不克服浏览器的怪癖。显然,如果在每一行中添加span,您希望浏览器在它们之间应用一些边距。在这种情况下,如果角度元素将它们放在一行中,因此您看不到边距,只需应用
display:inline block;边距:0 5px
span
元素,然后继续执行其他任务。@codeepic这并不能解决此问题。我可以很容易地设计出我的方式来解决这个问题,但令人恼火的是,我的HTML与我浏览器中的HTML不一样。你正在使用@Stackblitz,这是一个用于在线代码编辑的虚拟机-他们可能正在使用一些HTML解析器来删除内联元素之间的空格-将
span
标记放在一行中。如果您使用的是代码编辑器,就不会有这个问题。接受它,因为你无法控制Stackblitz如何生成html。或者在Twitter或Discord频道上点击创建者。这是两个家伙,他们非常平易近人。他们认为你在利用小问题制造大问题。在这里,我对它投了更高的票,所以你回到了0。@codeepic如果你想让x而不是y出现,一些框架有不同的标志可以设置。如果他们的决定是让您的代码以不同于您编写代码的方式执行,那么他们的决定肯定是愚蠢的。应该有一种方法来启用它,因此我们的代码和输出是相同的(如预期的)。HTML的基础在这里被完全忽略了。我知道有一种方法可以禁用它。谢谢!我知道有一种方法可以让它失效。谢谢!