角 - 部署JSON文件火力
问题描述:
- 我有一个角项目与模拟数据
- 当我生成项目,我坚持JSON文件到“DIST一个JSON文件“文件夹
- 我有一个角服务,引用JSON文件
- 我部署到火力和收到错误
- 请原谅这里认识不足,特别新本
问题
- 是否有可能使用JSON文件而在本地主机的工作?
- 我对Firebase的部署做了什么错误?
服务
import { IProjects } from './projects.interface';
@Injectable()
export class ProjectsService {
private _projectURL = '/dist/projects-list.json';
constructor(private _http: Http) { }
getProjects(): Observable<IProjects[]> {
return this._http.get(this._projectURL)
.map((response: Response) => <IProjects[]> response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}
getProject(id: number): Observable<IProjects> {
return this.getProjects()
.map((projects: IProjects[]) => projects.find(p => p.projectId === id));
}
private handleError(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
列表组件
export class ProjectsListComponent implements OnInit {
pageTitle = "Project List";
errorMessage: string;
projects: IProjects[];
constructor(private _projectsService: ProjectsService) {
}
ngOnInit(): void {
this._projectsService.getProjects()
.subscribe(projects => this.projects = projects,
error => this.errorMessage = <any>error);
}
onRatingClicked(message: string): void {
this.pageTitle = 'Project List: ' + message;
}
}
收到
错误任何帮助,将不胜感激:)
答
你需要添加模拟JSON文件中assets
文件夹中的角项目。
,你可以像这样访问
getProjects(): Observable<IProjects[]> {
return this._http.get("assets/projects-list.json")
.map((response: Response) => <IProjects[]> response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}
注: - 你需要添加静态文件,就像在资产文件夹图像或配置文件。角度只能访问资产文件夹。
谢谢@jonnysai! - 我已经尝试过,没有太多的运气。但是,当我运行“ng build - watch”时,json文件现在出现在assets文件夹中。当我部署到Firebase和本地(本地主机)时,我收到同样的错误,但似乎无法找到该文件。 (“无法加载资源:服务器响应状态为404(未找到)” – MegaTron
我不知道Firebase,但它应该在本地工作。尝试服务 – CharanRoot
啊,我已经在本地和Firebase上都能工作。 url需要是“assets/projects-list.json”,如果你更新了答案,我会将它标记为“回答”,因为你已经在那里教会了我一些新的东西,谢谢你的时间Jonny,非常感谢。 – MegaTron