Я создал внешний интерфейс Angular, и теперь я хочу, чтобы он связывался с моим бэкэндом PHP.При запуске ng serve я получаю предупреждение: ПРЕДУПРЕЖДЕНИЕ в ./node_modules/@angular/http/src/backends/xhr_backend.js 167: 24-52 "export" platform_browser_private 'не найдено в' @angular/ platform-browser '. Chrome выдает то же предупреждение и ошибку: ОШИБКА TypeError: Невозможно прочитать свойство' getDOM 'с неопределенным значением Как решить эту проблему?
App.component.html:
<form class="example-form">
<mat-form-field class="example-full-width">
<input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl" [matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let option of filteredOptions | async" [value]="option">
{{option}}
</mat-option>
</mat-autocomplete>
</mat-form-field>
</form>
App.component.ts:
import {Component, OnInit} from '@angular/core';
import {FormControl} from '@angular/forms';
import {Observable} from 'rxjs';
import {map, startWith} from 'rxjs/operators';
import { ServerService } from './server.service';
/**
* @title Filter autocomplete
*/
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
})
export class AppComponent implements OnInit {
myControl = new FormControl();
megyek: string[];
filteredOptions: Observable<string[]>;
constructor(private serverService: ServerService) {}
ngOnInit() {
this.serverService.getMegyek()
.subscribe(
(megyek: any[]) => this.megyek = megyek,
(error) => console.log(error)
);
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith(''),
map(value => this._filter(value))
);
}
private _filter(value: string): string[] {
const filterValue = value.toLowerCase();
return this.megyek.filter(option => option.toLowerCase().includes(filterValue));
}
}
App.module.ts:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { ServerService } from './server.service';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import {
MatButtonModule,
MatFormFieldModule,
MatInputModule,
MatRippleModule,
MatAutocompleteModule,
} from '@angular/material';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import { Server } from 'selenium-webdriver/safari';
@NgModule({
exports: [
MatButtonModule,
MatFormFieldModule,
MatInputModule,
MatRippleModule,
MatAutocompleteModule,
ReactiveFormsModule,
BrowserAnimationsModule,
FormsModule,
HttpModule
],
declarations: [],
imports: []
})
export class MaterialModule {}
@NgModule({
declarations: [
AppComponent
],
imports: [
MaterialModule,
BrowserModule,
],
providers: [ServerService],
bootstrap: [
AppComponent,
],
schemas: [],
})
export class AppModule { }
Server.service.ts:
import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import 'rxjs/Rx';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class ServerService {
constructor(private http: Http) {}
storeServers(servers: any[]) {
const headers = new Headers({'Content-Type': 'application/json'});
// return this.http.post('https://udemy-ng-http.firebaseio.com/data.json',
// servers,
// {headers: headers});
return this.http.put('https://udemy-ng-http.firebaseio.com/data.json',
servers,
{headers: headers});
}
getMegyek() {
return this.http.get('http://localhost/Varosok/Controller/Controller/ControllerCity.php?content=megyek')
.map(
(response: Response) => {
const data = response.json();
/*for (const server of data) {
server.name = 'FETCHED_' + server.name;
}*/
return data;
}
)
.catch(
(error: Response) => {
return Observable.throw('Something went wrong');
}
);
}
getAppName() {
return this.http.get('https://udemy-ng-http.firebaseio.com/appName.json')
.map(
(response: Response) => {
return response.json();
}
);
}
}