У меня есть приложение Angular 5, которое я хочу запустить локально, прежде чем пытаться развернуть его в Интернете.
У меня есть компонент contact
для получения электронной почты от пользователей через контактную форму.В папке компонентов у меня есть PHP-скрипт sendmail.php
, который вызывается при нажатии на кнопку формы.
Вот глобальная структура:
MyProjectName
----- src
----- ----- app
----- ----- ----- contact
----- ----- ----- ----- contact.component.html
----- ----- ----- ----- contact.component.scss
----- ----- ----- ----- contact.component.spec.ts
----- ----- ----- ----- contact.component.ts
----- ----- ----- ----- sendmail.php
В contact.component.html
Iвызовите функцию sendEmail()
при нажатии:
contact.html
<button type="submit" (click)="sendEmail()">Send</button>
Вот функция в contact.component.ts
файле
export class ContactComponent implements OnInit {
constructor(private sendMailService:SendMailService) { }
sendEmail():void {
this.sendMailService.performGetEx().subscribe();
}
И служба send-mail.service.ts
, которая вызывает скрипт php.Этот сервис расположен на том же уровне, что и папка contact
, и похоже, что здесь происходит ошибка пути
import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class SendMailService {
constructor(private http:HttpClient) { }
performGetEx():Observable<any> {
return this.http.get<any>('./contact/sendmail.php');
}
Каждый раз, когда я нажимаюна моей кнопке формы вот ошибка:
GET http://localhost:4200/contact/sendmail.php 404 (не найдено) zone.js: 2935
ОШИБКА HttpErrorResponse {заголовки: HttpHeaders, статус:404, statusText: «Not Found», url: «http://localhost:4200/contact/sendmail.php", ok: false,…}
Это действительно ошибка пути? Может ли сервер Angular Cli получить php-скрипт?
ОБНОВЛЕНИЕ:
Я развернул свой Angular-проект с Wamp Server (кстати, весь мой стиль - нокаут, я не знаю, нормально ли это?), И я не былне могу вызывать сценарий по щелчку, пока я не добавлю в форму action
свойство:
contact.component.html
<form action= "sendmail.php" method="post">
...
</form>
Я сделал то же самое без Wamp и у меня возникла та же проблема.