- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我带着很多想法来找你们,我想谈谈我无法得到的东西。
所以我们这里有一个由组件触发的服务。
这是一个简单的服务,当它被触发时提交一个可观察的元素:
return this.subject.asObservable();
然后我们有一个组件获取这个:
this.alertService.getMessage().subscribe(message => { this.message = message; });
好的,到目前为止一切正常。这个逻辑包含在一个组件中,他的选择器名称是<alert></alert>
这里我们有另一个组件 <alert></alert>
.
<div class="article-page-container">
<alert></alert>
<ul *ngIf="!alert" class="page-nav-container">
<li *ngFor="let page of pageArray" (click)="pageHandlerEvent(page)" [ngClass]="{ 'page-active': page == pageActive}">{{ page }}</li>
</ul>
</div>
你明白了吗?我想要做的是,当嵌套组件收到警报时,它应该关闭页面导航类。
我找到了一个解决方案,这不是如何让它发挥作用的问题,而是找到正确的解决方案,做出让人们引以为豪的东西?
我还需要多说吗?这很丑陋,我得到了 1000000000 个无用的支票,但它会起作用。
应该只在我的组件内部发生“变化”时才发生,对吗?
所以我尝试了这个:
<div class="article-page-container">
<alert (alertOn)="toggleNav($event)"></alert>
<ul *ngIf="!alert" class="page-nav-container">
<li *ngFor="let page of pageArray" (click)="pageHandlerEvent(page)" [ngClass]="{ 'page-active': page == pageActive}">{{ page }}</li>
</ul>
</div>
每次触发警报时,我都会执行一个简单的 this.alertOn.emit(true)
,
但是 ngOnChanges 根本不起作用。这将导致:
core.umd.js:3493 ORIGINAL EXCEPTION: Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.
我已尝试将此服务直接包含到容器中(相同问题)
我已将警报移出组件,使用带有
的输入ngOnChanges 工作(另一种解决方案,但看起来更像我正在避免我的问题不仅仅是找到解决方案)
我知道你们很棒,所以如果你们知道应该以“正确的方式”做什么。
祝你有美好的一天!
最佳答案
你试过移动
this.alertService.getMessage().subscribe(message => { this.message = message; });
订阅你的父容器,然后通过发送消息作为输入
<alert [message]=message></alert>
这样你还可以在订阅函数中包含一些逻辑来更改页面导航容器的显示标志 bool 值
关于javascript - Angular 2,ngOnChanges,ngDoCheck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800316/
NgChanges on 在输入绑定(bind)上运行 - 如果输入是引用类型 - 当引用发生变化时。即像这样的对象: { 值(value):2 如果它的值属性被改变,将不会导致 ngchanges
我正在尝试从组件的输入访问数据,并使用 ngOnChanges 这样做,但在控制台中抛出错误,如 "can not read property 'name' of undefined" but dat
在我的 angular 项目中,我试图通过点击下一个/上一个按钮来浏览列表。我有一个复选框,可以将显示的小时数从几小时更改为几天。我希望能够通过员工来回走动,并使值(value)观正确。有人告诉我,这
我有自动完成表单控件: @Component({ selector: 'app-autocomplete', templateUrl: './app-autocomplete.view
当我向数组添加项目时,ngOnChange 被触发: this.entries = [{"name": "John"},{"name": "Alex"},{"name": "Joe"}] 但当我删除这
我是 Angular 新手,只是关于 ngOnChanges 的问题。我知道 ngOnChanges() 方法需要一个参数(包含来自“@angular/core”的 SimpleChange),我们可
我有一个子组件,在其父组件中使用了两次,它使用 ngOnChaages 来更新值; 这一切都工作正常,但现在我正在尝试根据通过 @Input 变量传递的信息在子级中操作模板。 我发现的是;当父组件首次
我已经设置了 plunk 我在单击按钮时更改对象的 bool 属性,并且在单击 ngOnchange 时应该触发,但没有发生。为什么?。是否与父子组件之间共享相同的对象引用有关? 最佳答案 Angul
我正在使用 Angular 2 @Input 属性将所需的数值传递给子组件,就像这样。 父组件: @Component({ selector: 'test-parent', template: '
我遇到过这样的代码。问题是在选择已经在缓存中的项目后进度条没有消失(当缓存中的 api 调用使其工作正常时)。我能想到的是在 tap 中执行操作后没有运行变化检测。有人可以向我解释为什么吗? @Com
我需要检测 FormGroup 字段的实时变化。我有一个简单的父子组件结构如下: 父组件 View 子组件 Controller @Input() myForm: FormGroup; ngOnCh
我需要检测 FormGroup 字段的实时变化。我有一个简单的父子组件结构如下: 父组件 View 子组件 Controller @Input() myForm: FormGroup; ngOnCh
我正在开发这个 angular2 应用程序,其中我在一个组件中接受两个输入。 我使用 ngOnChanges 来检测这些输入值的变化。 @Input() games: any; @Input() se
所以基本上我有一个对象数组,我想通过 @Input 将数组中选定对象的索引提供给另一个组件。 问题是,当两次选择相同的项目时,ngOnChanges 函数没有检测到变化,因为当我将值从 1 设置为 1
我有一个包含复杂输入(一些图表数据)的子组件。在获得 API 响应后,我通过 Angular 5 中的 @Input() 装饰器从父组件发送此图表数据。因此,每次在父组件上发生更改时,我都需要根据 A
TL;DR:ngOnChanges 显示正在检测输入属性的更改,但未更新 View 我正在开发一个 Angular (2+) 应用程序,试图为使用 Observable 的服务完成的异步任务制作进度条
官方演示代码片段: ngOnChanges(changes: {[propKey: string]: SimpleChange}) {} 我的问题是ngOnChanges的参数。 changes是参数
在 Angular 2 中改变组件属性时,您能否以编程方式触发 Angular 变化检测? @Component({ selector: 'my-component', }) class MyC
比较 NgOnChanges 的最佳方法是什么,同时制作它 字符串类型安全 在 Angular ?目前这就是我正在做的。 NgOnChanges SimpleChanges 变量是数据类型:any 并
我是 Angular 5 的新手,我正在从它提供的官方网站学习组件交互 ngOnChanges(changes: {[propKey: string]: SimpleChange}) {} 并且在生命
我是一名优秀的程序员,十分优秀!