我在我的Nativescript Angular应用程序中使用的nativescript-google-maps-sdk
插件非常有用。
我的问题是我想使用缓存的图像显示在自定义的InfoWindow中。为此,我使用app范围内的nativescript-web-image-cache
插件。当我在infoWindow中使用常规<WebImage>
标记时,它会抱怨它不是注册组件:
元素'WebImage'找不到模块'ui / web-image'
应用程序中的其他任何地方都可以正常工作。在这个issue它建议:
InfoWindowTemplate内容被解析为Vanilla NativeScript XML,而不是Angular XML,因此它无法找到您创建的自定义Angular组件
所以问题是我怎么还能使用这个插件?有没有办法我可以以某种方式注册<WebImage>
组件,以便它可以在自定义InfoWindow中工作?
为了确保没有其他问题,我将nativescript-web-image-cache
插件添加到简单的NativesScript nativescript-google-maps-sdk
演示项目中,然后<WebImage>
标签工作得很好。
任何指针都非常感谢!
xmlns:blah="ns-blah"
作为核心模板的一部分传递,以便在该核心模板中正确注册。角度registerElement
对Core没有任何作用。现在您可以轻松地执行<IC:WebImage xmlns:IC="nativescript-web-image-cache" ...>
,然后它在模板中有效。但是,我建议你把xmlns:IC
放在最顶层的元素上;因为它使得阅读代码变得更加简单。但是如果项目周围没有父包装元素,则这是使用它在同一元素上注册它的有效代码。<IC:WebImage [param]="value" (param)="value"/>
和[param]
将完全打破核心中的模板解析。 NS-Core的解析器就像HTML一样,没有任何东西可以围绕(param)
,而param
应该在引号中。 value
可以使用value
将动态值绑定到模板中。{{ boundvalue }}
,<Page>
或任何其他顶级元素的东西。实际上这可能会导致问题。您通常只需要要查看的布局部分。所以在这种情况下<Frame>
由于InfoWindowTemplate内容被解析为Vanilla NativeScript XML,您可以将<StackLayout xmlns:IC=...><IC:WebImage...></StackLayout>
添加到组件的根/父元素。也使用xmlns:IC="nativescript-web-image-cache"
而不是<IC:WebImage>
。