2017-11-15 1 views
0

app.jswie NodeJS einen Wert einer Variablen zu angular4 Komponente gesendet

transporter.sendMail(mailOptions, (error, info) => { 
    if (error) { 
     return console.log(error); 
    } 
    console.log('Message sent: %s', info.messageId); 
    // Preview only available when sending through an Ethereal account 
    console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info)); 
    res.render('message',{msg:'email has been sent'}); 
}); 

component.html

<form #userForm="ngForm" (ngSubmit) = "onSubmit(userForm.value)"> 
    <div class="form-group"> 
    <label for="exampleInputPassword1">Name</label> 
    <input type="text" class="form-control" placeholder="Enter Name" name="who" ngModel> 
    <label for="exampleInputPassword1">Email</label> 
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email" name="email" ngModel> 
    <small id="emailHelp" class="form-text text-muted">I'll never share your email with anyone else.</small><br> 
    <input type="text" class="form-control" placeholder="Type here..." name="message" ngModel> 
    </div> 
    <button type="submit" class="btn btn-primary">Sent Mail</button> 
</form> 
{{msg}} 

component.ts

export class MessageComponent implements OnInit { 
    constructor(private http:Http) { } 
    ngOnInit() { 
    } 
    onSubmit = function (user) { 
    console.log(user); 
    //this.http.post('http://xxx/externalapi/add', user); 
    let parm=JSON.stringify(user); 
    console.log(parm); 
    let headers = new Headers({"Content-Type": "application/json"}); 
    let options = new RequestOptions({headers: headers}); 
    this.http.post("/api/send", parm, options).subscribe(data => { 
    }); 
    } 

Ich möchte eine Nachricht mit eckigen4 per E-Mail gesendet werden. Ich kann erfolgreich gesendet werden. nach , dass ich eine erfolgreiche Nachricht an den Client von app.js gesendet werden soll. aber ich weiß nicht, wie ich zu tun habe? Ich möchte gesendet Wert {msg} Variable, die in meiner component.html Seite ist

Antwort

0

In Ihrem app.js Datei, die Sie nicht res.render benötigen. Sie rendern keine Seite. Alles, was Sie senden müssen, sind einige schnelle JSON-Daten. Also, statt res.render(). Verwenden Sie etwas wie res.json()See here

Als nächstes alles, was Sie tun müssen, ist für die Antwort in Ihrer Komponente zu hören und damit umzugehen.

this.http.post("/api/send", parm, options).subscribe(data => { 
    this.msg = data.message; // Or Handle however you want. You should also handle errors 
}); 
+0

Es ist immer noch nicht funktioniert. muss ich den eckigen Service benutzen? –

+0

Ok. Was passiert jetzt? Sie müssen tatsächlich 'data.body.message' verwenden, ich kann mich nicht sicher erinnern. Versuchen Sie console.logging die Daten und lassen Sie uns wissen, was jetzt passiert. – Notmfb

0

Danke. Ich habe es gelöst. Ich habe das verwendet, um eine Antwort zu senden.

res.json ({"msg": "Nachricht gesendet"});

und ich greife Antwort mit .map(res=>this.mesg =res.json())

Verwandte Themen