評価のためにデータベースに新しいオブジェクトを作成しようとしていますが、現在はハードコードされているだけで動作させるが、ビューからは動的になります。私は現在、エラーを取得することができます私は評価オブジェクトが正しく戻されていないと信じてリードnullのプロパティ 'プッシュ'を読み取ることはできません?それとも、それを受け取るのを待っているオブジェクトを持っていないfirebaseと関係がありますか?Angularfireはヌルのプロパティ 'push'を読み取れません
私は、他の場所で使用していたコードを文字通り重複していますが、これは私が間違っていることを分かりません。
モデル
export class AssessmentItem {
$key: string;
first: string;
second: string;
third: string;
education: number;
employment: number;
health: number;
social: number;
civic: number;
housing: number;
}
サービス
assessmentItems: FirebaseListObservable<AssessmentItem[]> = null;
assessmentItem: FirebaseObjectObservable<AssessmentItem> = null;
constructor(private db: AngularFireDatabase,
private afAuth: AngularFireAuth) {
// setting userId returned from auth state to the userId on the service, now we can query
// currently logged in user, using the id. IMPORTANT
this.afAuth.authState.subscribe(user => {
if(user) this.userId = user.uid
})
}
createAssessmentItem(assessmentItem: AssessmentItem) {
this.assessmentItems.push(assessmentItem)
.catch(error => this.handleError(error))
}
TS
assessments: FirebaseListObservable<AssessmentItem[]>;
assessment: AssessmentItem = new AssessmentItem;
constructor(private visionService: VisionService,
public auth: AuthService) { }
ngOnInit() {
//this.assessments = this.visionService.getAssessment();
}
test() {
this.assessment.first = "test";
this.assessment.second = "test";
this.assessment.third = "test";
this.assessment.education = 1;
this.assessment.civic = 1;
this.assessment.employment = 1;
this.assessment.health = 1;
this.assessment.housing = 1;
this.assessment.social = 1;
this.visionService.createAssessmentItem(this.assessment)
console.log(this.assessment);
}
それがどのように使用するかビューを提出
<md-card-content>
<p>List 3 things that they did that you think helped them become successful:</p>
<md-input-container>
<textarea mdInput
placeholder="First"
[(ngModel)]="assessment.first"
(ngModelChange)="assessment.first"></textarea>
</md-input-container>
<md-input-container>
<textarea mdInput
placeholder="Second"
[value]="assessment.second"
[ngModel]="assessment.second"
(ngModelChange)="assessment.second"></textarea>
</md-input-container>
<md-input-container>
<textarea mdInput
placeholder="Third"
[value]="assessment.third"
[ngModel]="assessment.third"
(ngModelChange)="assessment.third">></textarea>
</md-input-container>
</md-card-content>
</md-card>
<md-card class="result">
<md-card-content>
<p>Education</p>
<md-slider
[min]="min"
[max]="max"
[step]="step"
[thumb-label]="thumbLabel"
[tick-interval]="tickInterval"
[value]="0"
[ngModel]="assessment.education"
(ngModelChange)="assessment.education">
</md-slider>
<p>Employment</p>
<md-slider
[min]="min"
[max]="max"
[step]="step"
[thumb-label]="thumbLabel"
[tick-interval]="tickInterval"
[value]="0"
[ngModel]="assessment.employment"
(ngModelChange)="assessment.employment">
</md-slider>
<p>Health and Wellbeing</p>
<md-slider
[min]="min"
[max]="max"
[step]="step"
[thumb-label]="thumbLabel"
[tick-interval]="tickInterval"
[value]="step - 1"
[ngModel]="assessment.health"
(ngModelChange)="assessment.health">
</md-slider>
<p>Social Connections</p>
<md-slider
[min]="min"
[max]="max"
[step]="step"
[thumb-label]="thumbLabel"
[tick-interval]="tickInterval"
[value]="step - 1"
[ngModel]="assessment.social"
(ngModelChange)="assessment.social">
</md-slider>
<p>Civic Participation</p>
<md-slider
[min]="min"
[max]="max"
[step]="step"
[thumb-label]="thumbLabel"
[tick-interval]="tickInterval"
[value]="step - 1"
[ngModel]="assessment.civic"
(ngModelChange)="assessment.civic">
</md-slider>
<p>Housing and Living Skills</p>
<md-slider
[min]="min"
[max]="max"
[step]="step"
[thumb-label]="thumbLabel"
[tick-interval]="tickInterval"
[value]="step - 1"
[ngModel]="assessment.housing"
(ngModelChange)="assessment.housing">
</md-slider>
</md-card-content>
</md-card>
<button md-raised-button (click)="test()">test button</button>
素晴らしいことですが、私はそのtsファイルに添付されたビューで使用するつもりです。今すぐ追加します。私が実際に理解するのに必要な唯一の他の質問は、単一のアイテムから属性を取得することです。ここのモデル。 – theHussle