(为了节省一些阅读 - 在引用@Input'ed变量时,问题归结为缺少'this')
我有一个父类 - 这将(最终)显示一个“QuestionComponents”列表。
父类模板的相关部分如下:
<question [(justText)]="testText" [(justObj)]="testObj" [(myQuestion)]="singleQuestion"></question>
只需说我从http服务调用中获取“singleQuestion”对象即可。 Question类,其中“singleQuestion”是一个实例,有一个基本的“toString”方法,以便于输出调试。
正如我测试的那样,testText,textObj和singleQuestion都是我日益复杂的对象。现在,这是非常基本的,只有一个“问题”,因为我的理解。孩子“QuestionComponent”如下所示:
@Component ({
selector:
'question',
templateUrl:
'./app/components/question/question.component.html',
directives: [FORM_DIRECTIVES],
})
export class QuestionComponent {
@Input() myQuestion:USGSQuestion
@Input() justText:string
@Input() justObj:object
constructor() {
}
onClick() {
myQuestion.generalInfo.label = "changed";
console.log("change attempted");
}
}
请注意,随着时间的推移,我需要能够与传递给QuestionComponent的对象进行一些繁重的交互。实际上,我的偏好是只将Question对象传递给构造函数,但是将数据传递给组件构造函数似乎不会出于某种原因。 (我离题)为了尝试检查我如何与传递的数据进行交互,我构建了onClick按钮并尝试更改其中一个@Input'ed变量。
子对象的模板如下:
<div *ngIf="!justText">
no text passed
</div>
<div *ngIf="justText">
<b>Here is the passed Text:</b><br>
{{justText}} <br>
</div>
<br>
<div *ngIf="!justObj">
no obj passed
</div>
<div *ngIf="justObj">
<b>Here is the passed JSON:</b><br>
Foo: {{justObj.foo}} <br>
Baz: {{justObj.baz}}
</div>
<br>
<div class="question">
<i>I am a question spot</i>
<div *ngIf="!myQuestion">
Loading Question...
</div>
<div *ngIf="myQuestion">
<b>Here is the passed question:</b><br>
{{myQuestion}} <br>
</div>
</div>
<button (click)="onClick()">Clickit</button>
如何获取类中@Input'ed对象的引用? (在这种情况下,我如何修改'onClick()'函数中的“myQuestion”?...其次,我如何确保将对象的更改传递给视图并更新?
我应该注意到我已经尝试通过onClick调用从'view'传递值,如下所示: (将按钮更改为:)
<button (click)="onClick(myQuestion)">Clickit</button>
(并将onClick更改为:)
onClick(q) { q.generalInfo.label = "changed"; }
这不起作用。
答案 0 :(得分:1)
我是个白痴。
经过几个小时的研究和搜索(在询问之前),所有这些都归结为添加“这个”。
...与"myQuestion.generalInfo.label = "changed";"
一样"this.myQuestion.generalInfo.label = "changed";"
有些日子你一定喜欢编程,嗯?