当您使用另一个元素的ElementRef.nativeElement.innerHTML属性将带有指令的元素添加到 DOM 时,该指令不会触发。如何以导致指令触发的方式向 DOM 添加元素?
示例
如果在我的组件中,我执行以下操作:
export class AppComponent implements OnInit {
constructor(private _elem: ElementRef) { }
ngOnInit() {
this._elem.nativeElement.innerHTML = '<span myDirective>Foo</span>';
}
}
Run Code Online (Sandbox Code Playgroud)
(这是对我实际实现的主要简化,所以让我们暂时忽略这是不好的做法)
然后myDirective,似乎附加到<span>将永远不会实际运行。
问题是:我如何获得角度来识别带有指令的新元素,以便它运行?
从资源文件夹加载文本文件等资源时,最常见的方法是使用 ClassLoader 获取路径:
String path = getClass().getClassLoader().getResource("file.txt").getPath();
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用 java 具有的众多读取器中的任何一个来读取该文件的内容。但由于某种原因,Paths.get(path)对这条路不满意:
byte[] content = Files.readAllBytes(Paths.get(path))
-> throws java.nio.file.InvalidPathException when executed
Run Code Online (Sandbox Code Playgroud)
ClassLoader.getResource(...).getPath() 正在返回:
/D:/Projects/myapp/build/resources/main/file.txt
Run Code Online (Sandbox Code Playgroud)
Paths.get()不喜欢它。显然后面的“:”/D是“非法字符”。(注意,路径看起来是正确的,文件实际上在那里)
哪一个导致了问题?是ClassLoader.getResource()返回无效路径还是Paths.get()无故行为?
一段时间后
,java中的路径似乎有多种不同的格式。各种框架似乎并不完全同意什么是正确的,什么是错误的,因此它们创建和接受的路径之间存在各种差异。
在此示例中,Paths.get()实际上并不期望路径中存在前导斜杠:
/D:/Projects/myapp/build/resources/main/vertex.vs.glsl <- EVIL
D:/Projects/myapp/build/resources/main/vertex.vs.glsl <- OK
Run Code Online (Sandbox Code Playgroud)
我想现在的问题是:如何清理返回的文件路径ClassLoader.getResource()以正确使用Paths.get()?这两种文件路径格式之间还有其他区别吗?
我有一个对象,T通过一个巨大的接口链,某些类型的泛型在某些时候丢失了.我想知道是否可以通过检查类型来使用函数来重新获得某种类型的安全性:
private T metaData; // type of T is lost
public <R> R getMetaData(Class<R> className) {
assert className.isInstance(metaData);
return (R) metaData;
}
Run Code Online (Sandbox Code Playgroud)
但是,此实现会产生"未经检查的强制转换:'T'到'R'"警告.是否存在避免此警告的实现,或者是唯一可以抑制此警告的解决方案?
我有一个用户连接时运行的内容脚本"*://www.youtube.com/*".我需要知道网址何时发生变化,因为当您点击链接时,YouTube没有打开新的"页面",可以这么说.而是它改变了URL和页面内容(我认为).因此,我的内容脚本没有意识到任何事情都发生了变化.(我知道这是因为当我重新加载页面时它会起作用)
那么如何找出我的脚本运行的选项卡的URL何时发生了变化?
[编辑]:我的问题涉及专门获取运行内容脚本的选项卡的URL,而不是获取活动选项卡的URL.
要在 方向上r通过点的直线上获得另一个点 ( ) ,我们可以使用以下公式,并将 替换为任意值:pva
要测试是否r在线,我们只需找到一个a满足的值即可。在我当前的实现中,我a通过重新组织方程来检查向量的每个分量是否相同r:
在代码方面,这看起来如下:
boolean isPointOnLine(Vector2f r, Vector2f p, Vector2f v) {
return (p.x - r.x) / v.x == (p.y - r.y) / v.y;
}
Run Code Online (Sandbox Code Playgroud)
但是,此方法不起作用:如果 的任何分量v是0,则该分数将计算为无穷大。因此我们得到了不正确的结果。
如何检查r线路是否正确?
是否可以在 rust 中指定分配变量的可变性?就像是
fn new(len: usize) -> Thing { ... }
fn new_mut(len: usize) -> mut Thing { ... }
Run Code Online (Sandbox Code Playgroud)
我有一个特定的案例,其中了解类型的可变性可用于对我的数据结构进行多项优化。
尝试手动强制执行可变性是可能的,但似乎很不优雅,尤其是当可变性的概念已经是 Rust 语言的固有部分时。你最终会遇到这样的奇怪情况:
// Thing::new() returns a data structure with an immutable backing type,
// but the code below looks like it should be mutable.
let mut foo = Thing::new(5);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我要么必须选择试图弄清楚是否有人试图Thing手动对我的不可变对象进行可变引用(并且我认为是恐慌),或者通过new返回一个包装器Thing来隐藏所有可变函数(这意味着mut关键字变得毫无意义和误导性)。
java ×2
angular ×1
classloader ×1
generics ×1
immutability ×1
javascript ×1
line ×1
path ×1
point ×1
rust ×1
vector ×1