Метод Get не требует использования метода подписки, но метод post требует подписи. Получить и отправить образцы кода ниже.
import { Component, OnInit } from '@angular/core'
import { Http, RequestOptions, Headers } from '@angular/http'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
import { Post } from './model/post'
import { Observable } from "rxjs/Observable";
@Component({
templateUrl: './test.html',
selector: 'test'
})
export class NgFor implements OnInit {
posts: Observable<Post[]>
model: Post = new Post()
/**
*
*/
constructor(private http: Http) {
}
ngOnInit(){
this.list()
}
private list(){
this.posts = this.http.get("http://localhost:3000/posts").map((val, i) => <Post[]>val.json())
}
public addNewRecord(){
let bodyString = JSON.stringify(this.model); // Stringify payload
let headers = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
let options = new RequestOptions({ headers: headers }); // Create a request option
this.http.post("http://localhost:3000/posts", this.model, options) // ...using post request
.map(res => res.json()) // ...and calling .json() on the response to return data
.catch((error:any) => Observable.throw(error.json().error || 'Server error')) //...errors if
.subscribe();
}
}
Инструкции от документация MSDN относительно класса DataContext - то, что я рекомендовал бы следующему:
В целом, экземпляр DataContext разработан для длительности одну "единицу работы" однако приложение определяет тот термин. DataContext является легким и не является дорогим для создания. Типичный LINQ к приложению SQL создает экземпляры DataContext в объеме метода или как член недолгих классов, которые представляют логический набор связанных операций базы данных.
, поскольку DataContext
IDisposable
, я нахожу самым легким создать и использовать DataContext
в using
оператор в рамках одного метода, таким образом, от этого можно избавиться правильно.
Также примечание, что "любые члены экземпляра, как гарантируют, не будут ориентированы на многопотоковое исполнение", таким образом совместно используя одного DataContext
между несколькими потоками, было бы неблагоразумно.
Внедрение зависимости.
Мы предпочитаем сохранять наш бизнес-слой незнакомым с сетью по сравнению с невеб-сценарием. Вместо этого расположенные на слое объекты бизнес-логики берут ссылку DataContext в своем конструкторе, который (явно) позволяет совместно использовать DataContext и (неявно) позволяет совместно использовать объектов объекта от результатов запроса, поскольку они - все от того же контекста данных.
Также DataContexts реализуют IDisposable, таким образом, действительно необходимо управлять их временем жизни. Все наши веб-формы имеют базовый класс, и часть этого является datacontext свойством (лениво созданный). Тем путем все на странице может доля это, который чаще всего имеет место. От контекста избавляются вручную в событии OnUnload() страницы.
<час>Я использую контекст на поток. Это хитро для установки, но это очищает все, что должно говорить с дб.
Я использую httpcontext в веб-сценариях и контексте потока для всего остального. Мы создали немного платформы так, чтобы контекст данных был полностью абстрагирован от уровня представления/бизнеса.