【发布时间】:2018-04-03 09:16:32
【问题描述】:
我将数据发送到ngrx store。之后,我想滚动到特定的div,它正在使用来自商店的数据。
@ViewChild('datalist') private myScrollContainer: ElementRef;
this.store.dispatch(new SetClientSearchResultsAction(filteredData));
setTimeout(() => {
this.myScrollContainer.nativeElement.scrollIntoView({ behavior:'smooth', block: 'start'});
}, 300);
下面是 HTML div。
<div #datalist id="mydata" *ngIf="clientSearchResults$ | async as searchResults"
class = 'result'>
<p> hellooo</p>
</div>
在发送要存储的数据后,我在我的 div 上滚动。但我不想使用setTimeout。它不必要地等待 300 毫秒。是否有任何替代方法?我只想滚动到我的div,当我的数据被发送或 ngif 条件得到满足时。
下面是我从 Store 获取值的组件的构造函数。
constructor(private store: Store<AppState>,
private formBuilder: FormBuilder, private _clientService: ClientService) {
this.clientSearchResults$ = this.store.select('searchResults');
}
【问题讨论】:
-
值得一提的是,
scrollIntoView是一项实验性功能,并非所有浏览器都支持。 developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView。查看所提供链接的浏览器兼容性。
标签: javascript angular typescript settimeout ngrx