- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在我的组件 ts 文件中导入了 OpenLayers map ,然后我创建了一个 id = map 的 div block ,其中必须显示 OpenLayers map ,但它没有。当我将 div block (#map) 移到 mat-stepper block 之外时,它就可以工作了。
组件.ts:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import OlMap from 'ol/Map';
import OlXYZ from 'ol/source/XYZ';
import OlTileLayer from 'ol/layer/Tile';
import OlView from 'ol/View';
import { fromLonLat } from 'ol/proj';
@Component({
selector: 'app-sell',
templateUrl: './sell.component.html',
styleUrls: ['./sell.component.scss'],
})
export class SellComponent implements OnInit {
...
map: OlMap;
source: OlXYZ;
layer: OlTileLayer;
view: OlView;
...
ngOnInit() {
this.source = new OlXYZ({
url: 'http://tile.osm.org/{z}/{x}/{y}.png',
});
this.layer = new OlTileLayer({
source: this.source,
});
this.view = new OlView({
center: fromLonLat([6.661594, 50.433237]),
zoom: 3,
});
this.map = new OlMap({
target: 'map',
layers: [this.layer],
view: this.view,
});
}
组件.html:
<mat-horizontal-stepper
linear
labelPosition="bottom"
#stepper
class="sell-form-container"
>
<mat-step ...>
<form ...>
...
<div id="map"></div> //<- here it does not work, map does not display
...
</form>
</mat-step>
...
</mat-horizontal-stepper>
<div id="map"></div> //<- here it works, map displays
组件.css:
#map {
width: 100%;
height: 500px;
}
我的代码有什么问题?
最佳答案
我认为您的问题与您尝试将 OLMap 附加到 mat-stepper 或 mat-step 的嵌入内容中的内容有关。
在组件生命周期中,子组件在父组件的 OnInit 阶段还没有准备好。因为您将所需的 div 放在 mat 组件中,所以它被包含在该组件的生命周期中。
解决此问题的一种方法是使用 ngAfterViewInit 生命周期方法。在该方法中使用您的代码应该可以解决此问题。
ngAfterViewInit() {
this.map = new OlMap({
target: 'map',
layers: [this.layer],
view: this.view,
});
}
出于潜在的好奇心,我还想介绍另一种使用组件的方法。留意嵌入的内容,如果你想要的元素在当前组件中,你应该使用 ViewChild 装饰器来选择它。否则,如果它在子组件中,请使用 ContentChild 装饰器。
// html
<mat-horizontal-stepper ...>
<mat-step ...>
<form ...>
...
<div #myMapRef id="map"></div>
...
</form>
</mat-step>
...
</mat-horizontal-stepper>
// parent ts
@ContentChild('myMapRef') // <-- if it's in a child component, your case should use this
@ViewChild('myMapRef') // <-- if it's in this component, your "this is working" would use this
myMap: ElementRef;
ngAfterViewInit() {
console.log(this.myMap); // can get the ID from the ElementRef
}
我强烈建议您实际熟悉组件生命周期的深度。这是我希望在学习 Angular 时早点做的一件事。
关于angular - 开放层 5 | Angular 7 |棱 Angular Material | map 在 Angular Material 垫步进器内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54722963/
我有一个 mat-select 元素,其中包含固定数量的 mat-option 元素。要查看最后一个元素,我必须滚动列表。是否可以扩大区域以便我无需滚动即可看到最后一个元素?
我想填充一些百分比值,以便小数位前始终有 3 个单位。使用整数我可以使用 '%03d' - 是否有等效的 float ? '%.3f' 适用于小数点后,但 '%03f' 什么都不做。 最佳答案 '%0
我有一个 vector Mat 文件,我想将它存储在 txt 文件中。每个 mat 文件的大小为 1x4500,我总共有 5000 个 vector 。我试图用上面的代码存储在 txtfile 中:
我需要一个 Mat 对象,其中每个元素都是一个类型为 double 且大小为 15 的 vector 。 我试过了 Mat seq(rownum,colnum,Vec); 但这给了我错误: expec
我想将我的 OpenCV Mat 转换为 Matlab .mat 文件,Matlab 可以轻松读取该文件。我不想使用Mex函数直接将数据提供给matlab,因为我想将数据保存在硬盘上。 有可用的 cv
我正在使用 当条件为真时,我希望有一些具有粗体样式的选项。 目前,下拉选项中的选项为粗体,但一旦选择该选项,该样式将不会应用于文本字段中的选择。 如何在选择后将样式应用于文本字段? 这是一个代码示例:
我在手机上运行我的应用程序,同时使用 MAT 进行调试。在我尝试在 Eclipse 中转储 HPROF 文件后,出现错误: 无法将 hprof 数据保存到临时文件中。设备上没有剩余空间。 我已经对此进
我有一个 CV_32F 类型的垫子 A 和一个二进制值为 0 和 255 的掩码 M。例如, A = [0.1 0.2; 0.3 0.4] M = [1 0 ; 0 0 ] 我想得到 A
我在我的 Angular 5 应用程序中使用@angular/material。我使用的 Angular Material 版本是 5.0.2。我正在使用@angular/animations 5.1
我想根据任意数据类型、行维度、列维度和 channel 维度的一维数据数组构建一个 3 channel 矩阵。在我的示例中,我有一个 1x12 double 组数据,我想将其转换为 2x2x3 Ope
我正在尝试使用 C# 中的 BouncycaSTLe 解密河豚加密字符串。 我能够轻松地加密和解密我自己的字符串,但不幸的是,我必须解密由另一个系统生成的字符串。 我能够使用以下命令使用 C#/Bou
我想在 Android Opencv c++ 库中获取绝对矩阵。我正在使用 abs(Mat m) 函数,但它会返回 MatExpr 对象。你知道如何只用矩阵的绝对值得到 Mat 对象吗? Ma
在 OpenCV 中,我可以将 RGB 1920 x 1080 垫乘以 3 x 3 垫以更改源垫的颜色组成。一旦我的源垫形状正确,我就可以使用“*”运算符来执行乘法。使用 cv::gpu::GpuMa
给定vector > A_STL , 我希望它被转换成 arma::mat A . 最佳答案 一种简单的方法是将 vector 矩阵的 vector 展平为一维 vector 。因此,您可以使用 ma
以下代码从文件中读取图像到 cv::Mat目的。 #include #include cv::Mat load_image(std::string img_path) { cv::Mat im
我有一个 AVCaptureSession,它输出带有 BGRA 像素的 CMSampleBuffer。我正在尝试仅从 BGR 创建 Mat 对象,以最有效的方式,使用数据 pointers。 CV
我正在尝试诊断我的 Android 应用程序中的内存问题。我转储了一个 HPROF 文件并将其加载到 Eclipse MAT 工具中(参见 How to analyze memory using an
我是一名优秀的程序员,十分优秀!