Angular Renderer2 setStyle 函数可以在样式属性尚未定义的元素上运行吗?

Can Angular Renderer2 setStyle function operate on an element where the style attribute is not yet defined?

在 Angular 应用程序中,假设我们有一个正文元素

<body>
   ...
</body>

现在我想使用 Angular Renderer2 as

将其背景设置为某个值
this.renderer.setStyle(document.body, 'background', 'url("some-example-url");');

什么也没发生。

但是现在如果我使用 setAttribute 函数来实现

this.renderer.setAttribute(document.body, 'style', 'background: url("some-example-url");');

这会很好。

我的问题是:setStyle 函数可以对尚未定义样式属性的元素进行操作吗?

找出我的代码中的问题所在。使用带有 semicolon-ended 字符串作为值的 setStyle 不起作用。

// Bad
this.renderer.setStyle(document.body, 'background', 'url("some-example-url");');
// Good
this.renderer.setStyle(document.body, 'background', 'url("some-example-url")');

在深入研究 Angular 源代码之后,尤其是在 platform-browser implementation of renderer 中,是否设置样式属性并不重要。 Angular 似乎无论如何都能处理它。