【发布时间】:2019-09-05 01:53:27
【问题描述】:
我重新编写了这个问题,以便更好地获得有关如何解决问题的帮助。当我将代码保存在我的 component.ts 文件中并将其显示在 html 页面上时,一切都很好,但是当我尝试将其移动到服务时,我得到错误并且没有动态显示。
组件.ts
import { PagesService } from './../services/pages.service';
import { Page } from './../admin/pages/page.model';
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { SERVER_URL } from '../../../src/environments/environment';
@Component({
selector: 'app-partner',
templateUrl: './partner.page.html',
styleUrls: ['./partner.page.scss'],
})
export class PartnerPage implements OnInit {
public pageList: Array<Page> = Array<Page>();
fileName: string = "partner";
page: Page;
constructor(private pgsService: PagesService, private http: HttpClient) {}
GetPages() {
this.http.get(`${SERVER_URL}api/pages`)
.subscribe(res=>this.Success(res),res=>this.Error(res));
}
GetPage(fileName: string) {
this.http.get(`${SERVER_URL}api/pageName/${fileName}`)
.subscribe(res=>this.SuccessPage(res), res=>this.Error(res));
}
ngOnInit() {
this.GetPages();
this.GetPage(this.fileName);
}
Error(res) {
console.log(res);
}
Success(res) {
console.log(res);
this.pageList = res;
console.log("this.pageList",this.pageList);
}
SuccessPage(res) {
this.page = res;
console.log("this.page",this.page);
}
}
合作伙伴.html
<ion-header>
<ion-buttons slot="start">
<ion-menu-button></ion-menu-button>
</ion-buttons>
</ion-header>
<ion-content padding>
<ion-title>{{page?.title}}</ion-title>
<div class="partner-wrap">
<ion-text>
<h1 class="partner-header">{{page?.heading}}</h1>
<img src="../../assets/partnerupogo.png" alt="PartnerUp!">
<div [innerHtml]='page?.content'></div>
</ion-text>
</div>
<div>{{page?.footer}}</div>
</ion-content>
我建议的 pages.service.ts
import { PagesService } from './../services/pages.service';
import { Page } from './../admin/pages/page.model';
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { SERVER_URL } from '../../../src/environments/environment';
@Component({
selector: 'app-partner',
templateUrl: './partner.page.html',
styleUrls: ['./partner.page.scss'],
})
export class PartnerPage implements OnInit {
public page: Page;
fileName: string = "partner";
constructor(public pgsService: PagesService, public http: HttpClient) {}
ngOnInit() {
this.pgsService.GetPage(this.fileName)
.subscribe(res=>this.pgsService.SuccessPage(res),res=>this.pgsService.Error(res));
this.page = this.pgsService.page;
}
}
我尝试将函数复制到服务中,并通过服务运行,但没有成功。这些函数将通过服务运行和 console.log,但我无法将数据传递给组件以在 html 中显示。
我在 src/app/partner/partner.page.ts(21,6) 中得到 错误:错误 TS2339:“void”类型上不存在属性“订阅”。
如何转换它以使其正常工作?
【问题讨论】:
-
如果可能的话提供stackblitz
-
你必须了解地球上
asynchronous的东西,并且可能从服务方法中返回一些东西给组件。 -
我尝试将文件上传到 stackblitz,但之前从未使用过。 stackblitz.com/edit/angular-4dd5ch
-
@SachinGupta 我同意,这就是我寻求帮助的部分原因。我一直在努力学习它,但似乎无法做到这一点。
-
好的。我通过返回我的 GetPage() 方法来显示页面,但我收到大量类型错误:PartnerPage.html:12 错误类型错误:无法读取 Object.eval 处未定义的属性“服务”[as updateRenderer]
标签: angular angular-services angular-httpclient