A presentation layer is under no obligation to use the same abstractions as the model it uses. Indeed there is a lot of power in using different abstractions.
It sounds like the abstraction you need in your presentation is "offer card" and isn't the same as an offer or a merchant. Allow this difference to be reflected in your code. Don't create an "offer card" model object. Have an "offer card" presentation object that takes messages from the model objects. It can then populate a UI with that information.
Going the other way can work of course. But it really has exactly the same problem inheritance does. Sure you get a new layer and some indirection but the interface is the same so the level of abstraction is the same. That is very limiting. Prefer new abstractions in new layers to old abstractions.
Can you please elaborate on " Have an "offer card" presentation object that takes messages from the model objects."? - CodeYogi
Sure thing. In this diagram your model is now Business Rules.

Here's an example where your "offer card" presenter doesn't know about or hold a reference to your offer or merchant models. All your presenter has to do is implement the interfaces they talk to. When they talk to you you translate what they say into things the UI can display.
As the presenter, you don't ask the model any questions at all. You don't ask the UI any questions. You get told to do things and you tell other things to do things.
This is tell, don't ask. It insures as you go through a layer you have the full benefits of polymorphism, of being object oriented, and have the right to abstract anyway you feel like abstracting.
It's amazingly powerful. But to take full advantage it demands you be willing to abstract at every layer. This means thinking of lots of names. Thankfully, you'd already done the hard work: "Offer card". Indeed, as I've mastered structuring my code in any conceivable way I've come to find what limits me more than anything else is thinking of a good name.
If you're wondering exactly what "talk to" means here's how Uncle Bob puts it:
You separate the UI from the business rules by passing simple data structures between the two. You don’t let your controllers know anything about the business rules. Instead, the controllers unpack the HttpRequest object into a simple vanilla data structure, and then pass that data structure to an interactor object that implements the use case by invoking business objects. The interactor then gathers the response data into another vanilla data structure and passes it back to the UI. The views do not know about the business objects. They just look in that data structure and present the response.
Robert C Martin
To put that a little simpler
The important thing is that isolated, simple, data structures are passed across the boundaries. We don’t want to cheat and pass Entities or Database rows. We don’t want the data structures to have any kind of dependency that violates The Dependency Rule.
Robert C Martin
A very good existing answer about this comes from @zapl
offer-cardwhich takes two parameters right nowofferandmerchantentities something like<offer-card offer="vm.offer" merchant="vm.merchant"></offer-card>the details of how to render the offer is abstracted in this web component. – CodeYogi Jun 08 '17 at 18:00service,view model/controller,entities. The controller is responsible for asking service to fetch the entities from server, the controller then communicates with template and binds data to it. – CodeYogi Jun 08 '17 at 18:03offersandmerchantand create a third objectOfferCardcontaining all the information needed to be shown (I am not sure if this object should have any behaviour or just public fields) and then pass this object to my presentation component something like<offer-card data="vm.offerCard"></offer-card>– CodeYogi Jun 08 '17 at 18:07offer-cardwhich takes two parameters right nowofferandmerchant..." This is backwards. Your presentation layer shouldn't hold references tooffersandmerchants. It should implement interfaces thatoffersandmerchantscan use to send messages to anoffer-cardor anything like it. – candied_orange Jun 08 '17 at 19:29offerobject is told about a change it accepts that change, updates it state, and then it sends a different message to theoffer-cardobject. The message is different becauseofferis allowed to perform logic that takes the message into a different level of abstraction. – candied_orange Jun 09 '17 at 04:21offermight have been told to insert something into a sorted list. When it talks to theoffer-cardit's not going to say "here's what was inserted." It's going to say "here's the updated list" or at least "here's where to insert this" Work is done every step along the way based on the state of the objects doing it. Control can flow from outer layers to inner layers and back to outer layers. All without getters, circular references, or inheritance. Interfaces can be designed around how their used rather then what is implementing them. It makes every layer change polymorphic. – candied_orange Jun 09 '17 at 04:29