मैं एक कोणीय एप्लिकेशन में बहुभाषी समर्थन जोड़ना चाहता हूं जो नेबुलर यूआई किट का उपयोग करता है। मैंने ngx-translate मॉड्यूल स्थापित और कॉन्फ़िगर किया है और यह अनुवादों को ठीक से लोड करता है। हालांकि, मुझे इसे प्रमाणीकरण घटकों में काम करने में परेशानी हो रही है। मैं इसे एक उदाहरण के साथ समझाने की कोशिश करूंगा:

मैं कस्टम घटकों का उपयोग कर रहा हूं जो नेबुलर बेस वाले को प्राप्त करते हैं। उदाहरण के लिए, मेरा लॉगिन घटक निम्नानुसार घोषित किया गया है:

export class LoginComponent extends NbLoginComponent implements OnInit {

मुझे इसमें ngx-translate TranslateService इंजेक्ट करने की आवश्यकता है, इसलिए कंस्ट्रक्टर कुछ इस तरह होना चाहिए:

constructor(service: NbAuthService, options: {}, cd: ChangeDetectorRef, router: Router, translate: TranslateService) {
    super(service, {}, cd, router); 
}

हालांकि, मुझे निम्न त्रुटि मिलती है:

/home/felip/projects/wfront/src/app/auth/login/login.component.ts में LoginComponent के लिए सभी पैरामीटर हल नहीं कर सकते: (?,?, [ऑब्जेक्ट ऑब्जेक्ट],?, [ऑब्जेक्ट ऑब्जेक्ट])

निर्माणकर्ताओं के साथ खिलवाड़ करने से बचने के लिए, मैंने आवश्यक सेवा तक पहुँचने के लिए एंगुलर के Injector का उपयोग करने का भी प्रयास किया:

app.module.ts

export let AppInjector: Injector;

login.component.ts

export class LoginComponent extends NbLoginComponent implements OnInit {
  translate = AppInjector.get(TranslateService);
  /* ... */

login.component.html

<h1 id="title" class="title">{{ "AUTH.TITLE" | translate }}</h1>

यह काम करता है, और मुझे उस भाषा में टेक्स्ट दिखाई देता है जिसे मैं एप्लिकेशन मुख्य घटक के निर्माता में translate.use() के साथ परिभाषित करता हूं। हालांकि, जब मैं रनटाइम में भाषा बदलता हूं, तो अनुवाद अपडेट नहीं होते हैं। मुझे यकीन है कि यह मेरे द्वारा इंजेक्ट किए गए TranslateService के तरीके से संबंधित है, लेकिन मुझे नहीं पता कि मैं इसे कैसे हल कर सकता हूं।

कोई सुझाव? धन्यवाद!

1
Fel 4 फरवरी 2020, 13:42

1 उत्तर

सबसे बढ़िया उत्तर

इंजेक्शन त्रुटि इसलिए होती है क्योंकि आप options को हल करने के लिए NB_AUTH_OPTIONS इंजेक्शन टोकन का उपयोग नहीं कर रहे हैं। कंस्ट्रक्टर की तरह दिखना चाहिए

Login.component.ts

constructor(authService: NbAuthService, @Inject(NB_AUTH_OPTIONS) options = {}, 
  cd: ChangeDetectorRef, router: Router, translate: TranslateService) {
    super(authService, options, cd, router);
}

कार्य उदाहरण

https://stackblitz.com/edit/nebular-dynamic-auth-api-tj5uey

नेबुलर स्रोत

https://github.com/akveo/nebular/blob/master/src/framework/auth/components/login/login.component.ts

2
Jason White 4 फरवरी 2020, 18:26