7

Tôi đang làm việc trên một dự án Ionic 2 TypeScript. Trong khi khởi động ứng dụng, tôi tiêm một dịch vụ thông qua hàm tạo.Tiêm phụ thuộc vào Góc 2 Tạo ra nhiều trường hợp trong khi sử dụng Inline Injector và Constructor Injection

@App({ 
    providers: [ MyService ] 
}) 
export class MyApp { 
    constructor(private instance1 : MyService){} 
} 

Và trong lớp khác tôi sử dụng

let injector = Injector.resolveAndCreate ([ MyService ]); 
let instance2 = injector .get(MyService ); 

tôi nhận được hai ví dụ khác nhau của các biến instance1 và instance2.

Có cách nào có thể làm cho họ như một ví dụ bằng cách sử dụng các Injector inline và Constructor

+0

các hành vi được mong đợi (xem câu trả lời của tôi). Để trở thành có thể đề xuất một giải pháp thay thế mà tôi cần biết thêm về trường hợp sử dụng của bạn –

Trả lời

2

"Singletons" được duy trì mỗi trường hợp nhà cung cấp. Nếu bạn tạo một mới Injector (đó là những gì Injector.resolveAndCreate ([ MyService ]); không, sau đó nó cũng có đó là trường hợp nhà cung cấp riêng. Do đó hành vi được mong đợi.

Bạn có thể tiêm các Injector đến thành phần và dịch vụ của bạn và tạo ra một đứa trẻ phun mà sau đó có thể làm việc như mong đợi.

Nếu bạn cần một vòi phun mà bạn không thể bơm phun kiễu góc, có một cách giải quyết khác được giải thích trong nhận xét này (với Plunker) https://github.com/angular/angular/issues/4112#issuecomment-153811572

+1

Chỉ cần thêm 'bộ phun: Injector' như tham số hàm tạo. Bạn có thể sử dụng nó để yêu cầu các cá thể (tôi nghĩ đó là 'injector.get (SomeType)') hoặc để tạo các bộ tiêm con. Tôi chỉ trên điện thoại do đó không có thêm chi tiết. –

+0

Cảm ơn bạn Gunter – tymspy

Các vấn đề liên quan