gpt4 book ai didi

angular - ngif 导致页面重新加载 - Angular 2

转载 作者:行者123 更新时间:2023-12-02 10:40:56 25 4
gpt4 key购买 nike

我尝试在收到搜索结果时显示组件,导致事件发射器关闭,导致执行 onResultsRecieved()

但是页面只是重新加载。所以我调试了它,当代码进入 onResultsRecieved() 时,当它运行 this.results.scroll() 时,它会导致一个异常,显示“TypeError: Cannot read属性“滚动”为未定义”,然后页面就会重新加载。

scroll() 是结果 View 子级上的方法。

为什么结果未定义?为什么异常永远不会显示在控制台中,而是重新加载页面?

涉及的所有代码:

find-page.component.html

<div id="find-page">
<find-form (onResultsRecieved)="onResultsRecieved($event)"></find-form>
</div>
<results-div #results *ngIf="showResults"></results-div>

find-page.component.ts

import { Component, ViewChild } from '@angular/core';
import { NavbarComponent } from '../shared/navbar.component';
import { FindFormComponent } from '../find-page/find-form.component';
import { ResultsComponent } from '../find-page/results.component';

@Component({
selector: 'find-page',
templateUrl: 'app/find-page/find-page.component.html',
styleUrls: ['app/find-page/find-page.component.css' ],
directives: [ FindFormComponent, ResultsComponent ]
})
export class FindPageComponent {
showResults = false;
@ViewChild('results') results;

onResultsRecieved(recieved: boolean) {
if ( recieved ) {
this.showResults = true;
this.results.scroll();
}else {
this.showResults = false;
}
}
}

结果.component.ts:

import { Component, AfterViewInit } from '@angular/core';

@Component({
selector: 'results-div',
templateUrl: 'app/find-page/results.component.html',
styleUrls: ['app/find-page/results.component.css' ]
})
export class ResultsComponent implements AfterViewInit {

ngAfterViewInit() {
ScrollToAnchor.goToTargetBottom("#results-page");
}

scroll() {
ScrollToAnchor.goToTargetBottom("#results-page");
}
}

results.component.html:

<div id="results-page"></div>

相关CSS:

#results-page {
overflow-y: auto;
overflow-x: hidden;
display: flex;
flex-direction: column;
justify-content: center;
padding-top: 50px; }

最佳答案

看来您正在使用表单,但是,我没有在任何地方看到附加的实际代码,因此这只是一个有根据的猜测。我遇到了一个非常相似的问题(这就是我偶然发现这个问题的原因),并且很容易就解决了。

当您提交表单时,即使没有操作属性,它也会尝试将您带到 action 属性定义的任何位置(在这种情况下,表单只会重新加载当前页面)。为了避免这种情况,请将 onSubmit="return false;" 添加到您的表单标记,这将阻止表单在提交后尝试更改页面。

希望这有帮助。

关于angular - ngif 导致页面重新加载 - Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com