كيفية الحصول على قيمة حل بيانات المسار؟

لذلك لدي عزم في مساري على النحو التالي. انها ببساطة حل json المستخدم.

const routes: Routes = [
  { path: 'profile/:id', component: ProfileEditComponent, pathMatch: 'full',
    canActivate: [AuthGuard],
    resolve: {
      user: ProfileResolveService
    }
  },
];

خدمة حلّي هي:

@Injectable()
export class ProfileResolveService implements Resolve {

  constructor(private service: UserService, private router: Router,
    private notificationService: NotificationService) {}

  resolve(route: ActivatedRouteSnapshot) {
    const id = route.paramMap.get('id');
    return this.service.getUserProfile(id).map((response) => {
      return response;
    }).subscribe(user => user, (error) =>  {
      this.router.navigate(['/login']);
      this.notificationService.error('Oops! Something went wrong.', 3000);
      return null;
    });
  }
}

أحاول الحصول على التصميم في المكون والقيام بما يلي:

 this.activatedRoute.data.map(data => {
    return data.user;
  }).subscribe((res) => {
    console.log('res', res);
  });

ومع ذلك ، لا يمكنني الحصول على القيمة بدلاً من الحصول على {user: Subscriber} في السجل

0
قد يساعدك على medium.com/@dazcyril/&hellip؛
وأضاف المؤلف Pardeep Jain, مصدر

3 إجابة

يمكنك أن تجرب أدناه من هذا القبيل

resolve(route: ActivatedRouteSnapshot) {
    const id = route.paramMap.get('id') || '';
    return this.service.getUserProfile(id)
       .map((response: any) => {
           return response.data;
        }).catch(Error => {
            this.notificationService.error('Oops! Something went wrong.', 3000);
            this.router.navigate(['/login']);
            return null;
            });
  }

في المكون الخاص بك

var user = this.aroute.snapshot.data['user'];
0
وأضاف
يمكنك اضافة خدمتك
وأضاف المؤلف Robert, مصدر
أحصل على {user: Subscriber} في السجل. يرسل المحلل المستخدم json. لست متأكدا ما هو الخطأ
وأضاف المؤلف user3840211, مصدر
كما أنه يقول لا وجود الصيد في ملحوظة
وأضاف المؤلف user3840211, مصدر
قمت بتحرير وإضافة الخدمة إلى السؤال
وأضاف المؤلف user3840211, مصدر

يمكنك تجربة ذلك أثناء معالجة الأخطاء

resolve(route: ActivatedRouteSnapshot) {
    const id = route.paramMap.get('id') || '';
    return this.service.getUserProfile(id).catch((err) =>{
       this.router.navigate(['/login']);
       return Observable.of(null);
     });
}

في المكون تفعل ذلك بهذه الطريقة

this.activatedRoute.data.subscribe((res) => {
    console.log('user', res.user);
});
0
وأضاف
أحصل على {user: Subscriber} في السجل. يرسل المحلل المستخدم json. لست متأكدا ما هو الخطأ. - user3840211 فقط الآن تحرير
وأضاف المؤلف user3840211, مصدر

ذلك لأنك تقوم بإرجاع كائن المستخدم بالكامل في

  return data.user;

إذا كنت تريد قيمة المستخدم التي يمكنك استخدامها

console.log('res', res.user); or res['user']

ستقوم بطباعة قيمة المستخدم بعد ذلك

0
وأضاف
لا ، res.user غير معرّف
وأضاف المؤلف user3840211, مصدر
من كل شيء حاولت أن أحصل على {user: Subscriber} في السجل. يرسل المحلل المستخدم json. لست متأكدا ما هو الخطأ.
وأضاف المؤلف user3840211, مصدر
إذا كان الأمر كذلك ، أود أن أقترح عليك أن تضع وحدة التحكم في هذا. activatedRoute.data.map (data => {console.log (data) return data.user؛}). subscribe ((res) => {console.log ('res'، res)؛})؛ والتحقق من أنك تحصل على قيمة في البيانات
وأضاف المؤلف ishantg, مصدر